织梦CMS - 轻松建站从此开始!

罗索

E680I RGB转换成JPG

落鹤生 发布于 2009-12-16 20:09 点击:次 
从E680手机屏幕抓取的原始数据是RGB565格式的,如果想转换成JPEG,调用 JPEGLIB的话,先要转换成RGB888的格式。这个过程的转换,可以同时完成将图像倒置、和RGB位顺序变换。
TAG:

从屏幕抓取的原始数据是RGB565格式的——有的摄像头驱动支持直接抓取RGB888的格式,但我的不支持。如果想转换成JPEG,调用 JPEGLIB的话,先要转换成RGB888的格式。这个过程的转换,可以同时完成将图像倒置、和RGB位顺序变换。

RGB565 转换成RGB888,请参考前面的一贴。

下面是RGB24转换成JPG的过程
//bmp24 是整个RGB888图片的数据

      struct jpeg_compress_struct jcs;

    // 声明错误处理器,并赋值给jcs.err域
    struct jpeg_error_mgr jem;
    jcs.err = jpeg_std_error(&jem);

    jpeg_create_compress(&jcs);

//2、指定压缩后的图像所存放的目标文件,注意,目标文件应以二进制模式打开

      jpgFile=fopen("bmp24spp.jpg","wb");
    if (jpgFile==NULL)...{
          free(bmp24);
          return 0;
    }
    jpeg_stdio_dest(&jcs, jpgFile);

//3、设置压缩参数,主要参数有

      jcs.image_width = width;      // 为图的宽和高,单位为像素
    jcs.image_height = height;
    jcs.input_components = 3;     //色彩通道数// 在此为1,表示灰度图, 如果是彩色位图,则为3
    jcs.in_color_space = JCS_RGB; //色彩空间//JCS_GRAYSCALE表示灰度图, JCS_RGB 表示彩色图像

    jpeg_set_defaults(&jcs);
    jpeg_set_quality (&jcs, 60, 1);//压缩质量

//4、上面的工作准备完成后,就可以压缩了,压缩过程非常简单,首先调用 jpeg_start_compress,
//然后可以对每一行进行压缩,也可以对若干行进行压缩,甚至可以对整个的图像进行一次压缩,如下:

    jpeg_start_compress(&jcs, 1);

    JSAMPROW row_pointer[1]; // 一行位图
    int row_stride;          // 每一行的字节数

     row_stride = jcs.image_width*3;  // 如果不是索引图,此处需要乘以3

    // 对每一行进行压缩
    while (jcs.next_scanline < height) ...{
        row_pointer[0] = & bmp24[jcs.next_scanline * row_stride];
        jpeg_write_scanlines(&jcs, row_pointer, 1);
    }

    jpeg_finish_compress(&jcs);//压缩完成后,记得要调用jpeg_finish_compress函数

//5、最后就是释放压缩工作过程中所申请的资源了,主要就是jpeg压缩对象,由于在本例中我是直接用的局部变量,
//所以只需调用jpeg_destroy_compress这个函数即可,如下:

    jpeg_destroy_compress(&jcs);
 
可以看出,使用了第三方的库之后,转换的过程很简单。不过,有个不完整的地方:如果想全在内存中完成,有点麻烦。


环境:
Cygwin
arm-linux-gcc
jpeg-6b

编辑工具:
Notepad++

运行环境:
Moto E680I(Linux/armv5tel 2.4.20_mvlcee30-mainstone)

(cangwu_lee)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200912/8133.html]
本文出处:CSDN.NET 作者:cangwu_lee
顶一下
(2)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容