6

我目前正在开发 ac# 开源照片马赛克软件(Sourceforge Link)。该软件将大量小照片(图块)拼接成一张大图像。

由于最终的图像大小通常为 20k 像素乘以 15k 像素,因此我只保存了一张关于如何在内存中排列图块的地图。为了构建最终图像,我将其构建为部分,即 8 行带(也可以是任何其他数字)。

在 bmps 的情况下,通过首先写入 bmp 标头并随后将 ARGB 数据附加到此文件,可以轻松地逐块保存此数据。

但是生成的 bmp 太大而无法进一步处理(例如,将它们交给一些海报印刷公司)。因此,我想将这些大图像保存为我的硬盘上的 jpg。

现在的问题是,由于 jpg 是压缩的,因此以块的形式写入数据似乎非常棘手(普通的 Bitmap.Save() 函数将首先将完整图像加载到内存中,因此不适用),因为写入纯的、未压缩的 RGB 数据不会的。

应该存在在聚会中编写 jpg 的基本功能,因为据我所知,jpg 的压缩算法适用于块或 8x8 像素。

我查看了几个图像库(FreeImage、GraphicsMagick、LibTiff.NET)来寻找这个问题的解决方案,但找不到任何解决方案。LibTiff 基本上具有所需的功能,但仅适用于 tiff 图像格式。

非常感谢你的帮助!最大限度

4

1 回答 1

1

既然你没提OpenJPEG library,我想你可能错过了。

http://www.openjpeg.org/

当然,您将需要一些包装器,但我认为您可以使用该库实现您想要做的事情。但这不是最简单的解决方案,我知道。如果其他人提出了更好、更简单的建议,您可以跳过此库。

编辑:这看起来很不完整,但可能会有所帮助,因为它是 C# 代码。http://www.codeproject.com/KB/graphics/SimpleJpeg.aspx

于 2011-11-25T10:05:24.973 回答