如果可能,使用libjpeg我想从JPEG图像的中间读取一行而不读取所有前面的行。这可以做到吗?我可以使用libjpeg读取特定的图像行吗?
回答
答案几乎肯定是“你可以,但需要比你想要的更多的努力”。
JPEG图像是一种标记流,它包含整个压缩图像的全局信息或与图像特定部分相关的信息。压缩通过将图像分解成色彩平面来工作,可能将色彩空间改变为可对色彩信息进行降采样的色彩空间,并在每个以8x8像素块为单位的平面内进行。
例如,如果通过仅转置基本块和每个块内部的系数来确定压缩图像的大小使其仅由整个块构成,则可以将压缩图像旋转90度;即不需要解压缩,旋转真实图像并重新压缩。
鉴于此,您的方法是在进入库的过程中解析标记流,将所有标记全局传递给图像,修改与图像大小相关的任何标记,并删除包含系数的标记裁剪矩形。
如果限制种植完成基本块太粗糙,您可能需要进一步裁剪结果。
我不清楚的是,是否有真正的胜利替代方案,即从图书馆出来的结果。该库具有高度可配置性,因此您可以提供未压缩的数据使用者功能,该功能会丢弃裁剪矩形之外的所有像素,并只保存想要保留的像素。
感谢您的详细评论。我认为你是对的,与简单地处理libjpeg的输出相比,它没有什么优势。我最初的想法是将图像保存在磁盘上,然后加载和绘制特定的图块。最后,我认为更好的方法是简单地一次处理源文件一行,在磁盘上生成缓存切片,然后根据需要加载这些切片。 – 2010-09-11 02:35:34
@Michael Cooper,这对我很有意义。您可以使用多分辨率金字塔,并按需填充切片,并将其缓存回磁盘。我相信这实质上就是Adobe Light Room在其缩略图缓存中所做的,例如,每个分辨率都放在一个单独的文件中。 – RBerteig 2010-09-11 03:21:16
- 1. 我可以使用libjpeg来读取带有alpha通道的JPEG吗?
- 2. 我可以在CakePHP的行为中使用特定模型吗?
- 3. 可以使用imageIndexTitlesForTableView的图像吗?
- 4. 我可以弹出特定的ViewController吗?
- 5. 我可以使用Sparkfun 13.56读取手机的NFC吗?
- 6. 我可以使用从文件中读取的testng组吗?
- 7. 我可以使用CGDataProviderCreateSequential()按顺序读取CGImageRef的数据吗?
- 8. 我可以使用MPI中的API读取远程文件吗?
- 9. 我可以使用PowerShell“绘制”/使用给定的文本创建图像吗?
- 10. 我可以在FastReport中读取RTF吗?
- 11. 使用SuperCSV读取特定行
- 12. 我可以在运行时禁用特定子视图的自动布局吗?
- 13. 如何使用MEX从特定位置读取图像?
- 14. 我可以拉Instagram使用特定标签的照片吗?
- 15. 我们可以让postgres为特定的表使用缓存吗?
- 16. 我可以在Symfony2中使用特定的路线吗?
- 17. 我可以配置cxf使用特定的XML解析器吗?
- 18. 我可以使用SVG图像作为按钮图标吗?
- 19. 我可以使用Catalyst来显示图像或图形吗?
- 20. 我可以使用Node.js读取PDF或Word文档吗?
- 21. 我可以使用Facebook API读取私人讯息吗?
- 22. 我可以使用jprofiler读取jmap转储吗?
- 23. 我可以使用JQuery从web.config读取数据吗?
- 24. 我可以使用Webassembly从磁盘读取文件吗?
- 25. 我可以使用Python中的正则表达式搜索特定的行吗?
- 26. 我可以使用Ruby从pdf获取特定单词的坐标吗?
- 27. 在JMX中,我可以直接获取特定的MBeanAttributeInfo吗?
- 28. 我可以使用FTP替换ColdFusion站点上的图像吗?
- 29. python可以获取特定窗口的屏幕截图吗?
- 30. org.bouncycastle.openssl.PEMReader可以读取java.security.PrivateKey吗?
如果你的意思是直接从文件中,没办法。 JPEG格式被严格压缩,所以你不能在不需要解压缩整个文件的情况下拉出一行。 – 2010-09-09 21:41:27
我担心可能会出现这种情况,尽管我曾希望JPEG压缩可能偶尔会重置,从而允许无序的读取。看看libpng,它似乎也只允许顺序访问。那么,我假设PNG也不能被随机读取? – 2010-09-09 22:45:21
PNG可能更适合随机访问,但前提是其无损压缩模式未使用。大多数图像处理库都将文件I/O作为一种填充和存储帧缓冲区的方式,并且所有实际处理都是在包含整个图像的未压缩缓冲区的RAM中完成的。魔鬼详细介绍了如何组织缓冲区。 – RBerteig 2010-09-10 01:02:13