绑定这是一个相当开放式的问题,因为还是有可能的空间图像质量和图像尺寸之间的柔性..毕竟,使它成为黑白色并用CCITT T.6压缩它的黑白(传真式)压缩将打败绝大多数即使不是所有具有彩色功能的压缩算法。
如果你愿意去黑与白(不灰度),那么做!它使文件非常小。
否则,我推荐一系列较小的图像转换和自适应预测树(参见here)。 APT软件包是开源或公有领域,非常易于编译和使用。它的优点是它在各种图像类型(特别是文本)上表现良好,并且可以缩放图像大小与图像质量更好,而不会失去可读性。 (我发现自己压扁一个example_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并不一定会导致此图像的最佳效果,但它不会变成完全无法识别的像渐变等类似照片的内容,所以您应该更好地理解更多类型或意外类型的文件。
结果: 88kb 76kb 64kb 48kb
Processed image before compression
相关问题从贵宾库:https://github.com/jcupitt/libvips/issues/9 – guettli
什么是你的最后文件要求?什么需要能够阅读它们? (例如,它们必须是png,还是可以是另一种格式?如果是另一种格式,它们可以是专有格式还是通常未使用的格式?)另外,什么样的扫描?它们是否总是具有相对较少颜色的文档?他们是否全面照片?另外,您可以花多少时间处理它们?他们总是关于你的例子的维度? – Kaganar
我更新了这个例子。让我们将example.png尽可能小。更多颜色,其他尺寸或输出格式目前并不重要。 – guettli