Lea*_*ROR 1 convert mogrify png imagemagick image-processing
我有几张大小为 32MB 的图像,我想将它们的大小从 32MB 更改为 100Kbs 或任何 KB 大小,而不影响其颜色。
我正在尝试的命令是:
muhammad@muhammad-mohsin:~/scans$ find . -iname '*.png' -exec mogrify -format jpg "*.png" {} +
muhammad@muhammad-mohsin:~/$ find . -type f -iname \*.png -delete
muhammad@muhammad-mohsin:~/$ find . -iname '*.jpg' -exec mogrify -define jpeg:extent=300kb -strip -quality 90 -scale 90% *.jpg {} +
Run Code Online (Sandbox Code Playgroud)
在这里,首先我将 PNG 转换为 JPG,将其大小从 32Mbs 减小到 5.8Mbs,一切都保持不变,但当我使用第三个命令时,它会删除图像中的背景颜色并使其灰度有点模糊。
但是,文本仍然可读,但颜色和背景徽标不可读。
如何使用 Convert、mogrify 或任何其他工具实现此目的?到目前为止我已经尝试了所有可能的方法。
这是因为 JPEG 压缩的工作原理。它尝试将彼此相似的相邻像素舍入为相似的值。这会导致细节丢失和块状。
当您增加压缩级别时,这会变得更加明显,而这正是您正在做的。此外,您还分两步进行:
通过在最终质量上从无损变为有损,您可能会获得jpeg:extent=300kb -strip -quality 90 -scale 90%更好的结果,因此仅应用有损压缩一次,例如在第一次转换中使用。
此外,您没有提及图像的大小和细节程度。将其降至 300kB 并保持所需的质量可能不太可行。
要消除背景斑点,您可以尝试在某些图像编辑软件中对文档应用阈值,例如将小于特定灰色阴影的任何内容强制为白色。
然而,无论您做什么,从 30MB 无损格式压缩到 300kB 有损格式都会导致质量明显下降。