我需要减少彩色扫描的文件大小。
到目前为止,我认为应该采取以下步骤:
到目前为止,我们使用convert(imagemagick)和net-ppm工具。
扫描是发票,而不是照片。
任何提示都表示赞赏。
更新
示例:
恩惠
带有可重现解决方案的example.png最小且可读性最好的简化文件获得了赏金。解决方案只需要使用开源软件。
文件格式并不重要,只要您可以再次将其转换为PNG即可。处理时间并不重要。我可以稍后优化。
更新
我的黑白输出效果非常好(谢谢)。颜色减少到约16或32种颜色会很有趣。
答案 0 :(得分:4)
这是一个相当开放的问题,因为图像质量和图像尺寸之间仍有可能存在弯曲的空间......毕竟,使用CCITT T.6黑白(传真式)压缩它是黑白的如果不是所有具有颜色功能的压缩算法,压缩将大大超过裤子。
如果你愿意去黑白(不是灰度),那就去做吧!它使文档非常小。
否则我推荐一系列次要图像变换和自适应预测树(参见here)。 APT软件包是开源或公共域,非常易于编译和使用。它的优点是它在各种图像类型(尤其是文本)上表现良好,它可以让您在不损失可读性的情况下更好地缩放图像大小与图像质量。 (我发现自己在一个可读性阈值上将一个大小为-1000的颜色版本压缩到48KB,而64K具有明显的伪像但易于阅读。)
我将APT与imagemagick tweakery相结合:
convert example.png -resize 50% -selective-blur 0x4+10% -brightness-contrast -5x30 -resize 80% example.ppm
./capt example.ppm example.apt 20 # The 20 means quality in the range [0,100]
并扭转过程
./dapt example.apt out_example.ppm
convert out_example.ppm out_example.png
解释imagemagick设置:
-resize 50%
使其缩小一半,以加快处理速度。还隐藏了一些打印和扫描工件。-selective-blur 0x4+10%
:锐化实际上会产生更多噪音。你真正想要的是一种选择性模糊(比如在Photoshop中),当没有“边缘”时会模糊。-brightness-contrast -5x30
:这里我们将对比度增加很多,以剪切由页面轮廓引起的不良着色(导致较少的可压缩数据)。我们也略微变黑,使黑人更黑。-resize 80%
最后,我们调整大小比example_1000图片大小。 (足够接近。)这也减少了明显伪像的数量,因为当像素合并在一起时它们有点隐藏。此时,您将在此示例中看到精美的图像 - 漂亮,流畅的色彩和清晰的文字。然后我们压缩。 20的质量值是一个非常低的设置,它不再是漂亮的外观,但文件是非常清晰的。即使质量值为0,它仍然是最清晰的。
同样,使用ADT并不一定会为这张图片带来最佳效果,但它不会变成完全无法识别的类似于渐变等类似照片的内容,所以你应该更好地覆盖类型或意外类型的文件。
答案 1 :(得分:4)
如果你真的不关心颜色的数量,我们也可以去黑白并使用双层编码器。我最终使用的是DJVU格式,因为它与JBIG2比较好,并且有开源编码器。在这种情况下,我使用了didjvu
编码器,因为它获得了最佳效果。 (在Ubuntu上你可以apt-get install didjvu,也许也可以在其他发行版上。)
我最终看起来像这样的魔法编码:
convert example.png -resize 50% -selective-blur 0x4+10% -normalize -brightness-contrast -20x100 -dither none -type bilevel example_djvu.pgm
didjvu encode -o example.djvu example_djvu.pgm --lossless
请注意,这实际上是一个优秀的色彩模糊,在全分辨率下为0x2 + 10% - 这最终会使想象在转换为双层图像之前尽可能好。
解码的工作原理如下:
convert example.djvu out_example.png
即使分辨率更高(更容易阅读),尺寸权重也是24KB。当缩小到相同的大小时,它仍然是24KB!最后,只有原始图像缩小的75%和0x5 + 10%的模糊,它的权重为32KB。
请点击此处查看视觉效果:http://img29.imageshack.us/img29/687/exampledjvu.png
答案 2 :(得分:2)
如果你已经使用Imagemagick实用程序“convert”做了正确的事情,那么首先查看Imagemagick库可能是个好主意。
快速浏览一下我的Ubuntu包列表,显示了perl,python,ruby,c ++和java的绑定