我正在尝试编写一个程序(在java中的概率),无需先解码就可以无损地连接多个jpeg.
我以为我会开始简单,尝试使用十六进制编辑器追加相同大小的2个jpegs,使用相同的设置压缩.
首先,我提取jpeg B的图像数据并将其附加到jpeg A.通过修改标题中指定的尺寸,我得到一个新的可识别图片(y轴上附加的jpeg A + jpeg B),可以进行显示.然而,尽管来自jpeg B的图像数据清晰可辨,但它似乎丢失了大量的颜色信息并且显然是不正确的.
所以我的问题是我错过了哪些步骤?我不认为我需要更改任何其他维度特定的标题值,所以也许我需要霍夫曼解码来自两个jpeg的图像数据,然后将它们附加在一起,然后重新编码该批次?
我花了一些时间阅读jpeg规格和标题等,但说实话,我已经超出了我的深度,可以用指针或两个指针!
非常感谢您的帮助.
感谢所有的建议.是的,这绝对是可能的,我应该在我原来的问题中提到jpegtran.我基本上试图复制jpegtran功能的这个方面,但在我自己的程序中使用它.我想我应该看一下jpegtran源代码,但我对C一无所知,而且对一般的编程知之甚少,所以逆向工程源代码说起来容易做起来难!
这是非常可行的.我在很多谷歌地图图片上做了它,加入这些图块并形成一张海报大小的图像.有一个名为JPEG Tools的Unix软件包正是为了做到这一点.该程序称为jpegjoin.纯C源代码,提供Windows二进制文件.在编译时,它会创建一个命令行应用程序,该应用程序在运行时会在许多其他事物中连续丢失两个jpeg图像.它不会对任何图像进行解压缩,只需将压缩数据合并在一起并相应地修复标头.我用它来合并100个图像来创建50个条带,然后再次合并这些条带以创建一个大图像.
有关更多信息,请访问http://en.wikipedia.org/wiki/Lossy_compression#Lossless_editing
源代码
可以在此处找到基础jpegtran库的源代码.模仿jpegjoin的示例脚本就在这里.