3734|1

888

帖子

3

TA的资源

五彩晶圆(初级)

楼主
 

ARGB888 在一帧数据内画框的实现 [复制链接]

/*
       Copyright (C) 2013 xubinbin 徐彬彬 (Beijing China)
               Email: xubbwd@gmail.com
                          
        程序实现通过调用draw_Rectangle_func在一帧ARGB数据内画一个框
        char *draw_Rectangle_func(char *ptr,int startx,int starty,int width,int higth,int line_width,int colour)
        char *ptr 帧数据的指针地址
        int startx 画框的起始地址x
        int starty 画框的起始地址y
        int width 画框的宽度
        int higth 画框的高度
        int line_width 画框的线条的宽度
        int colour 画框的线条的颜色(百度查rgb颜色就可以)
*/

  1. /*
  2.        Copyright (C) 2013 xubinbin 徐彬彬 (Beijing China)
  3.                Email: xubbwd@gmail.com
  4.                           
  5.         程序实现通过调用draw_Rectangle_func在一帧ARGB数据内画一个框
  6.         char *draw_Rectangle_func(char *ptr,int startx,int starty,int width,int higth,int line_width,int colour)
  7.         char *ptr 帧数据的指针地址
  8.         int startx 画框的起始地址x
  9.         int starty 画框的起始地址y
  10.         int width 画框的宽度
  11.         int higth 画框的高度
  12.         int line_width 画框的线条的宽度
  13.         int colour 画框的线条的颜色(百度查rgb颜色就可以)
  14. */

  15. #include
  16. #include

  17. #define FRAME_WIDTH                                (1280)
  18. #define FRAME_HEIGHT                        (720)
  19. #define FRAME_SIZE              (FRAME_WIDTH*FRAME_HEIGHT*4)
  20. #define IN_FILENAME              "frame.raw"
  21. #define OUT_FILENAME             "out.raw"
  22. #define COLOUR                  (0xEEB422)

  23. char *draw_Rectangle_func(char *ptr,int startx,int starty,int width,int higth,int line_width,int colour)
  24. {
  25.         if(ptr == NULL)
  26.         {
  27.                 printf("input ptr addr error!\n");
  28.         }
  29.         if( (line_width*2>width) || (line_width*2>higth) )
  30.         {
  31.                 printf("line_width too wide !\n");
  32.                 return NULL;
  33.         }
  34.         if( (startx+width > FRAME_WIDTH)  || (starty+higth > FRAME_HEIGHT) )
  35.         {
  36.                 printf("Width of the cross !\n");
  37.                 return NULL;
  38.         }
  39.         int i,j;
  40.         int *data = NULL;
  41.         data = (int *)ptr;
  42.         for(i = 0;i < FRAME_HEIGHT ;i ++)
  43.         {
  44.                 for(j = 0;j < FRAME_WIDTH;j ++)
  45.                 {         
  46.                         if(  (j>=startx && j<(startx+line_width))||(j<(startx+width) && j>=(startx+width-line_width)) )
  47.                         {
  48.                                 if(i>=starty&&i<(starty+higth))
  49.                                 {
  50.                                         *(data+i*FRAME_WIDTH+j) = colour;
  51.                                 }
  52.                         }
  53.                        
  54.                          if( i>=starty && i<(starty+line_width) ||(i<(starty+higth)&&i>=(starty+higth-line_width)) )
  55.                         {
  56.                                 if((j>=(startx+line_width)) && (j<(startx+width-line_width)))
  57.                                 {
  58.                                         *(data+i*FRAME_WIDTH+j) = colour;
  59.                                 }
  60.                         }
  61.                 }
  62.         }
  63.         return (char *)data;
  64. }


  65. int main(int argc,char * argv[])
  66. {

  67.         int ret = 0;
  68.         FILE *in_file,*out_file;
  69.         char * frame_buffer = NULL;
  70.         frame_buffer = (char *)malloc(FRAME_SIZE);
  71.        
  72.         //read frame file
  73.         in_file = fopen(IN_FILENAME,"r");
  74.         if(in_file == NULL)
  75.         {
  76.                 printf("open in file error!\n");
  77.         }
  78.         ret = fread(frame_buffer,FRAME_SIZE,1,in_file);
  79.         if(ret != 1)
  80.         {
  81.                 printf("ret = %d\n");
  82.                 printf("fread file error!\n");
  83.         }
  84.         fclose(in_file);

  85.         draw_Rectangle_func(frame_buffer,10,10,1280-20,720-20,10,COLOUR);//红

  86.         //write frame file
  87.         out_file = fopen(OUT_FILENAME,"w");
  88.         if(out_file == NULL)
  89.         {
  90.                 printf("open in file error!\n");
  91.         }
  92.         ret = fwrite(frame_buffer,FRAME_SIZE,1,out_file);
  93.         if(ret != 1)
  94.         {
  95.                 printf("ret = %d\n");
  96.                 printf("fwrite file error!\n");
  97.         }
  98.         fclose(out_file);
  99.         free(frame_buffer);

  100.         printf("Done!\n");
  101.         return 0;
  102. }
复制代码

最新回复

谢谢楼主分享 学习一下  详情 回复 发表于 2013-5-24 10:17
点赞 关注
个人签名邮箱:ternence.hsu@foxmail.com
 
 

回复
举报

51

帖子

3643

TA的资源

纯净的硅(初级)

沙发
 
谢谢楼主分享 学习一下
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表