|
/*
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颜色就可以)
*/
- /*
- 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颜色就可以)
- */
- #include
- #include
- #define FRAME_WIDTH (1280)
- #define FRAME_HEIGHT (720)
- #define FRAME_SIZE (FRAME_WIDTH*FRAME_HEIGHT*4)
- #define IN_FILENAME "frame.raw"
- #define OUT_FILENAME "out.raw"
- #define COLOUR (0xEEB422)
- char *draw_Rectangle_func(char *ptr,int startx,int starty,int width,int higth,int line_width,int colour)
- {
- if(ptr == NULL)
- {
- printf("input ptr addr error!\n");
- }
- if( (line_width*2>width) || (line_width*2>higth) )
- {
- printf("line_width too wide !\n");
- return NULL;
- }
- if( (startx+width > FRAME_WIDTH) || (starty+higth > FRAME_HEIGHT) )
- {
- printf("Width of the cross !\n");
- return NULL;
- }
- int i,j;
- int *data = NULL;
- data = (int *)ptr;
- for(i = 0;i < FRAME_HEIGHT ;i ++)
- {
- for(j = 0;j < FRAME_WIDTH;j ++)
- {
- if( (j>=startx && j<(startx+line_width))||(j<(startx+width) && j>=(startx+width-line_width)) )
- {
- if(i>=starty&&i<(starty+higth))
- {
- *(data+i*FRAME_WIDTH+j) = colour;
- }
- }
-
- if( i>=starty && i<(starty+line_width) ||(i<(starty+higth)&&i>=(starty+higth-line_width)) )
- {
- if((j>=(startx+line_width)) && (j<(startx+width-line_width)))
- {
- *(data+i*FRAME_WIDTH+j) = colour;
- }
- }
- }
- }
- return (char *)data;
- }
- int main(int argc,char * argv[])
- {
- int ret = 0;
- FILE *in_file,*out_file;
- char * frame_buffer = NULL;
- frame_buffer = (char *)malloc(FRAME_SIZE);
-
- //read frame file
- in_file = fopen(IN_FILENAME,"r");
- if(in_file == NULL)
- {
- printf("open in file error!\n");
- }
- ret = fread(frame_buffer,FRAME_SIZE,1,in_file);
- if(ret != 1)
- {
- printf("ret = %d\n");
- printf("fread file error!\n");
- }
- fclose(in_file);
- draw_Rectangle_func(frame_buffer,10,10,1280-20,720-20,10,COLOUR);//红
- //write frame file
- out_file = fopen(OUT_FILENAME,"w");
- if(out_file == NULL)
- {
- printf("open in file error!\n");
- }
- ret = fwrite(frame_buffer,FRAME_SIZE,1,out_file);
- if(ret != 1)
- {
- printf("ret = %d\n");
- printf("fwrite file error!\n");
- }
- fclose(out_file);
- free(frame_buffer);
- printf("Done!\n");
- return 0;
- }
复制代码
|
|