jepg

在210开发板相片显示
2 JPEG库的移植
2.1 JPEG库的安装
(1)把共享目录下的jpegsrc.v9a.tar.gz复制到你的linux的当前用户的家目录下;
(2)在你的linux下打开终端并进入到当前用户的家目录,然后执行如下命令解压:
tar xvf jpegsrc.v9a.tar.gz
cd jpeg-9a/
(3)对jpeg源码进行配置
./configure –host=arm-linux –prefix=/home/gec/3rdlib

其中
–host表示最终生成的jpeg库的运行目标平台;
–prefix表示jpeg库的安装目录,
如果没有–host和–prefix则默认生成x86+linux平台上的jpeg库,当然你也可以生成以x86+linux上的jpeg库

(4)编译jpeg
make
(5)安装jpeg
make install
(6)我们可以观察安装后的成果
cd ~/3rdlib
tree

编译:
arm-linux-gcc -o digitalPhoto main.c -I /home/gec/3rdlib/include/ -L /home/gec/3rdlib/lib/-ljpeg
编译后生成digitalPhoto执行文件,下载到开发板上,将图片放在一个文件夹下执行:
./digitalPhoto audi.jpg

注意:要把UBUTUN上的/3rdlib/lib/libjpeg.so.9 复制到开发板/lib /
int main(int argc,char *argv[])
{
FILE *fp;
int fd;
unsigned char *pLineColor;
unsigned int *pFrameBuffer;
int image_width,image_height;
//声明一个jpeg解压对象
struct jpeg_decompress_struct dinfo;
//把jpeg的出错信息关联到进程的标准错误设备上,除非你不关心jpeg库的出错信息
struct jpeg_error_mgr err;
dinfo.err=jpeg_std_error(&err);
//创建一个jpeg解压对象
jpeg_create_decompress(&dinfo);

if(argc<2)
{
    printf("Usage:digitalPhoto  jpeg_filename.\n");
    return -1;
}
fp=fopen(argv[1],"r");
if(fp==NULL)
{
    perror("Cannot open jpeg_file:");
    goto exit;
}

//将jpeg解压对象和jpeg文件流关联起来,意味这jpeg解压对象将从文件流中获取数据
jpeg_stdio_src(&dinfo,fp);
//获取头部信息
jpeg_read_header(&dinfo,TRUE);
image_height=dinfo.image_height;
image_width=dinfo.image_width;
printf(“w=%d,h=%d,num=%d\n”,image_width,image_height,dinfo.num_components);
//打开framebuffer
fd=open(“/dev/fb0”,O_RDWR);
pFrameBuffer=(unsigned int *)mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
//开始解压
jpeg_start_decompress(&dinfo);
//申请一个保存jpeg一行颜色数据的缓冲区
pLineColor=(unsigned char*)malloc(image_width*dinfo.num_components);
//按行读取jpeg图片的数据并处理
while(dinfo.output_scanline

include

include

include

include

include

include

你可能感兴趣的:(lunix)