php绘制灰阶图,生成灰阶测试图

* Generate YUV420P gray scale bar.

* @param width Width of Output YUV file.

* @param height Height of Output YUV file.

* @param ymin Max value of Y

* @param ymax Min value of Y

* @param barnum Number of bars

* @param url_out Location of Output YUV file.

*/

int simplest_yuv420_graybar(int width, int height,int ymin,int ymax,int barnum,char *url_out){

int barwidth;

float lum_inc;

unsigned char lum_temp;

int uv_width,uv_height;

FILE *fp=NULL;

unsigned char *data_y=NULL;

unsigned char *data_u=NULL;

unsigned char *data_v=NULL;

int t=0,i=0,j=0;

barwidth=width/barnum;

lum_inc=((float)(ymax-ymin))/((float)(barnum-1));

uv_width=width/2;

uv_height=height/2;

data_y=(unsigned char *)malloc(width*height);

data_u=(unsigned char *)malloc(uv_width*uv_height);

data_v=(unsigned char *)malloc(uv_width*uv_height);

if((fp=fopen(url_out,"wb+"))==NULL){

printf("Error: Cannot create file!");

return -1;

}

//Output Info

printf("Y, U, V value from picture's left to right:\n");

for(t=0;t

lum_temp=ymin+(char)(t*lum_inc);

printf("%3d, 128, 128\n",lum_temp);

}

//Gen Data

for(j=0;j

for(i=0;i

t=i/barwidth;

lum_temp=ymin+(char)(t*lum_inc);

data_y[j*width+i]=lum_temp;

}

}

for(j=0;j

for(i=0;i

data_u[j*uv_width+i]=128;

}

}

for(j=0;j

for(i=0;i

data_v[j*uv_width+i]=128;

}

}

fwrite(data_y,width*height,1,fp);

fwrite(data_u,uv_width*uv_height,1,fp);

fwrite(data_v,uv_width*uv_height,1,fp);

fclose(fp);

free(data_y);

free(data_u);

free(data_v);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值