我目前正在开发一个c#开源照片拼接软件(Sourceforge Link)。该软件将大量小照片(拼贴)拼接成一个大图像。c#:保存JPG的部分
由于最终图像的大小通常是20k像素乘以15k像素的数量级,所以我只保存了如何在内存中排列图块的贴图。为了构建最终的图像,我正在构建它的部分,即8行的带(也可以由任何其他数字)。
在bmps的情况下,这个数据可以很容易地通过块来保存块,首先写一个bmp头,然后将ARGB数据附加到这个文件。
但是由此产生的bmps太大而无法进一步处理(例如将它们交给一些海报印刷公司)。因此,我想将这些大图像保存为我的硬盘上的jpgs。
现在的问题是,由于jpgs被压缩,以块形式写入数据似乎非常棘手(正常的Bitmap.Save()函数会首先将完整的图像加载到内存中,因此不适用),因为写入纯,未压缩的RGB数据不会这样做。
在派对上写jpgs的基本功能应该存在,因为据我所知,jpg的压缩算法可以处理大块或8x8像素。
我查看了几个图像库(FreeImage,GraphicsMagick,LibTiff.NET)以找到解决方案,但找不到任何解决方案。 LibTiff基本上具有所需的功能,但仅限于tiff图像格式。
非常感谢您的帮助! Max
谢谢,我的确错过了。将尽快检查出来! – mgulde
嗯,转出OpenJPEG基本上只能用于JPEG到JPEG2K的转换和返回。简单的编码器是一个很好的解决方案,尽管它看起来很复杂;) – mgulde
嗯,_does_ openjpeg库支持增量I/O?我看了一下(尽管文档非常小),并且所有的图像I/O接口似乎只能在完整的图像上运行......您能否指出用于执行增量I/O的API调用openjpeg库...?谢谢! – snogglethorpe