我想在 OSX 上缩小 png 或 jpg。我只想缩小而不影响图像质量。
像tinypng.org
有推荐的图书馆吗?我只知道imagemagick。有没有办法在本地做到这一点?或其他库来缩小/压缩图像而不影响图像质量?
我的目标是缩小文件大小,例如:
logo.png >> 476 k before shrink
logo.png >> 50k after shrink
编辑:要清楚,我想压缩文件的大小,而不是图像分辨率。
我想在 OSX 上缩小 png 或 jpg。我只想缩小而不影响图像质量。
像tinypng.org
有推荐的图书馆吗?我只知道imagemagick。有没有办法在本地做到这一点?或其他库来缩小/压缩图像而不影响图像质量?
我的目标是缩小文件大小,例如:
logo.png >> 476 k before shrink
logo.png >> 50k after shrink
编辑:要清楚,我想压缩文件的大小,而不是图像分辨率。
TinyPNG.org通过使用图像量化来工作——图像中相似的颜色被转换为 HSV 或 RGB 模型,然后根据距离进行合并。
它是如何工作的?
...
当您上传 PNG(便携式网络图形)文件时,图像中的相似颜色会组合在一起。这种技术被称为“量化”
...
src:http ://tinypng.org
此处的答案概述了这样做的方法:https ://stackoverflow.com/a/492230/556479 。
关于这个问题也有一些答案,请参考如何在Mac OS 上使用 Objective-c执行此操作:如何将位图减少为一组已知的 RGB 颜色
有关更深入的指南,请参阅 Wikipedia:http ://en.wikipedia.org/wiki/Color_quantization
我的建议是使用http://pngnq.sourceforge.net,它会提供比 ImageMagick 更好的结果,对于http://tinypng.org中给出的单个示例,它也会产生非常相似的输出。它是论文“Kohonen Neural Networks for Optimal Color Quantization”中方法的微小 C 实现。仅此一项就更好了,因为您不再依赖封闭的未知实现。
原始文件 (57 KB)、tinypng.org (16 KB)、pngnq (17 KB):
使用 ImageMagick,我可以得到的 256 色的最佳量化使用了 Floyd-Steinberg 的 LAB 色彩空间和抖动:
convert input.png -quantize LAB -dither FloydSteinberg -colors 256 output.png
这会生成一个 16 KB 的 png,但它包含更多的视觉伪像:
您在使用 ImageMagick 时遇到问题吗?它具有丰富的量化功能,例如
bool MagickQuantizeImage( MagickWand mgck_wnd,
float number_colors,
int colorspace_type,
float treedepth,
bool dither,
bool measure_error )
这是使用 imageMagick 进行量化的非常详尽的指南