这个是压缩图片的程序。把640*480 转化成 480*272的函数。
//压缩图片
void Resize(unsigned char *in_img,unsigned char *center_buffer,unsigned char *out_img)
{
long i,j;
long fX;
long fY;
for(j=0; j<480; j++) //对图像480行进列压缩
{
for(i=0; i<1440; i++) //640列→480列
{
fX = (long)((13333*i/10000 + 0.5) + 640*3*j); //计算相应的列
center_buffer[i + 480*3*j] = in_img[fX]; //转换
}
}
for(i=0; i<1440; i++)
{
for(j=0; j<272; j++)
{
fY = (long)(480*3*((long)(17647*j/10000 + 0.5))+ i);//计算相应的行
out_img[480*3*j + i] = center_buffer[fY]; //转换
}
}
}
使用如下
unsigned char rgbdata_buffer[480*1920]; //rgb是24为的,因此三个字节 640*3=1920
unsigned char center_buffer[480*1440]; //列压缩后存进去的数组
unsigned char DisplayBuffer[272*1440] ; //裁剪成272*480, rgb 480*3=1440
Resize(rgbdata_buffer,center_buffer,DisplayBuffer);//压缩图片,640*480--480*272
然后DisplayBuffer这个数组就可以直线液晶屏显示了。这时会发现,图片比开发板提供的显示范围大了一整圈。
「该帖子被 mx125211 在 2015-08-21 09:37:26 编辑过」