(紧急求救)linux中 如何高效使用jpeglib 将jpeg图像内容扫描到 buffer中

chenbin200818 2010-08-26 02:55:17
unsigned char* buffer[max];
/*
对buffer分配内存
*/
while (cinfo.output_scanline < jpeg_height)
{
jpeg_read_scanlines(&cinfo,& buffer[i], 1);
i++;
}
对jpeg解压过程中 将扫描到内容读取到buffer中时 发现效率很低
解压一个 宽 4400 高 3000的图片时 while循环 居然用去了10秒,, 有没有办法能高效的执行扫描


求解
...全文
204 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
Now you can read the decompressed image data by calling jpeg_read_scanlines()
one or more times. At each call, you pass in the maximum number of scanlines
to be read (ie, the height of your working buffer); jpeg_read_scanlines()
will return up to that many lines. The return value is the number of lines
actually read. The format of the returned data is discussed under "Data
formats", above. Don't forget that grayscale and color JPEGs will return
different data formats!
意思是说 可以一次读多行 可是我让它一次读多行 程序就出错
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
.....
用pidbuf和纯c不纯c一样的啊
和jpeglib是一样的啊 都是一个库而已啊
jpeg也就是一个解码库啊
下面底层一些图形库也都依赖于这些
像 webkit里面都使用这个哦来decode
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
楼上的老大 我是用 纯c 写的程序 调用 jpeglib库的 不是gdk ,而且 gdk我从没用过
有没有 更好的方法
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
在clutter中封装了一个cogl对象也有new_from_file会有两种
一种使用pixbuf 一种使用quartz库这个我也不是很清楚
这种对象创建在gpu buffer中如果使用图形转换效率非常高
而pixbuf 和 cairo都是内存中操作的依赖于cpu
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
这样你先用gdk-pixbuf库的
GdkPixbuf * gdk_pixbuf_new_from_file (const char *filename,
GError **error);
guchar * gdk_pixbuf_get_pixels (const GdkPixbuf *pixbuf);
gdk_pixbuf_get_width ()
gdk_pixbuf_get_height ()
gdk_pixbuf_get_rowstride ()

cairo能直接解析png的而不能搞jpg的
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
你等下哦 我好像说错了
我来看下
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
麻烦5楼能 仔细说吗 我在linux下纯 c 写的程序 gpeglib 了解不是很多 谢谢
goodluckyxl 2010-08-26
  • 打赏
  • 举报
回复
cairo 的surface 直接new_from_file
然后把指针get出来 应该比你那个能快一点吧
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
你们都起的真早阿 我不行
tietao 2010-08-26
  • 打赏
  • 举报
回复
用内存拷贝函数怎么样,
可以试一下memcpy。
gamemagic 2010-08-26
  • 打赏
  • 举报
回复
我记得有个方法是可以直接把RGB8数据弄出来的
jixingzhong 2010-08-26
  • 打赏
  • 举报
回复
这个效率会这么低吗?

不应该啊
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
难道真的没有方法 解决吗
chenbin200818 2010-08-26
  • 打赏
  • 举报
回复
难道 帖子又沉了???

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧