使用JPEG压缩帮助更改TIFF文件中的DPI

时间:2011-03-01 15:34:50

标签: c# image-manipulation jpeg tiff freeimage

我有一个来自扫描仪的 Tiff 文件。它的分辨率为 300 dpi。但后来我需要将其更改为不同的值,例如 100

在不失去初始压缩和颜色深度的情况下,最好的方法是什么?

我已经尝试用Bitmap.FromFile()打开 Tiff ,但我得到了OutOfMemoryException,也使用了FreeImage库,但是在这里,如果Tiff是灰度的,它总是使用 LZW 压缩而不是 JPEG 。我知道LZW更好,但 JPEG 对我来说是必须的。

2 个答案:

答案 0 :(得分:2)

更改分辨率时,您是否希望图像的大小仍以英寸为单位?或者当你转到100时,你是否期望300像素现在将超过3英寸。

如果您希望它的大小相同,则必须将图像重新取样为较小的像素数(1/3)。在这种情况下,您必须解码图像,重新采样,然后重新编码。您肯定会在重新采样中丢失信息,然后您会因TIFF支持的有损JPEG压缩而失去更多信息。

如果您的图像现在看起来要大3倍,那么您可以通过仅编辑TIFF的MetaData来实现此目的。不必触摸实际像素数据来改变分辨率。 libtiff可以这样做 - 我不知道LibTiff.NET是否可以,但可能。

如果您正在寻找商业解决方案,我公司的DotImage Document Imaging也可以这样做。

答案 1 :(得分:1)

OutOfMemoryException是因为.NET不支持JPEG压缩的TIFF。有关详情,请参阅this answer