Java 如何压缩一批图像?

Java 如何压缩一批图像?,java,image,performance,compression,Java,Image,Performance,Compression,我们一直在向海外传输千兆字节的压缩TIFF,每批图像传输都需要很长时间。一批货需要6个多小时才能转移,这并不少见。我想减少传输一批图像的时间 我知道视频压缩得非常好,因为大多数时候每帧视频都与之前的视频非常相似,压缩算法利用了这一点。在我们的场景中,图像通常看起来彼此相似。是否有任何图像压缩库可以用来利用图像之间存在大量冗余这一事实?理想情况下,我想要无损压缩 如果我在传输图像之前将其转换为视频,然后再将其转换回另一侧的图像,是否可行?如果可以,您会推荐哪些库?我需要能够从Java调用它,最好在

我们一直在向海外传输千兆字节的压缩TIFF,每批图像传输都需要很长时间。一批货需要6个多小时才能转移,这并不少见。我想减少传输一批图像的时间

我知道视频压缩得非常好,因为大多数时候每帧视频都与之前的视频非常相似,压缩算法利用了这一点。在我们的场景中,图像通常看起来彼此相似。是否有任何图像压缩库可以用来利用图像之间存在大量冗余这一事实?理想情况下,我想要无损压缩


如果我在传输图像之前将其转换为视频,然后再将其转换回另一侧的图像,是否可行?如果可以,您会推荐哪些库?我需要能够从Java调用它,最好在Linux上运行它,但是库不需要用Java编写。Windows也可能是一种可能性。

我将首先尝试什么:

从未压缩的TIFF开始(否则,很难找到相似之处)

tar
将它们放在一起(因此它们包含在单个文件中,可以是特定范围的图像)

然后使用您选择的压缩算法查看哪一种算法(在单个文件上)产生最好的结果

不费吹灰之力就可以轻松尝试。它的效果取决于源图像本身(以及所使用的压缩算法)

如果上述方法不能产生足够的结果,则可采用另一种方法:

  • 确保您拥有所有未压缩的图像

  • 发送第一张图片

  • 对下一幅图像进行
    二进制差分
    (或者可能对hextump进行差分)

  • 发送diff文件并在接收端应用它来重建图像

  • 对每个图像重复3-4次


  • 我个人认为,使用视频压缩算法(毕竟,它们是专门为不同的目的定制的)不会轻易获得好的(无损)结果。

    您现在使用哪种TIFF压缩?你能接受有损JPEG压缩吗?如果没有,也许您可以尝试对每个图像使用简单的增量压缩,只发送差异?这些差异将与原始差异一样大,但它们可能会压缩得更好(因为样本值的差异更小)。