我想在OSX上缩小png或jpg。我只想缩小而不影响图像质量 比如tinypng.org
有推荐的图书馆吗?我只知道imagemagick。有没有办法本地做到这一点?或其他库来缩小/压缩图像而不影响图像质量?
我的目标是缩小文件大小,例如:
logo.png >> 476 k before shrink
logo.png >> 50k after shrink
编辑:要清楚,我想压缩文件的大小,而不是图像分辨率。
答案 0 :(得分:2)
TinyPNG.org通过使用图像量化来工作 - 图像中的相似颜色被转换为HSV或RGB模型,然后根据距离进行合并。
它是如何工作的?
...
上载PNG(可移植网络图形)文件时,会合并图像中的相似颜色。这种技术称为“量化”
...
src:http://tinypng.org
这里的答案概述了这样做的方法:https://stackoverflow.com/a/492230/556479。
此问题也有一些答案,请参考 Mac OS使用objective-c :How do I reduce a bitmap to a known set of RGB colours
有关更深入的指南,请参阅维基百科:http://en.wikipedia.org/wiki/Color_quantization
答案 1 :(得分:1)
我的建议是使用http://pngnq.sourceforge.net,它会比ImageMagick提供更好的结果,对于http://tinypng.org中给出的单个示例,它也会产生非常相似的输出。它是文章“用于最佳颜色量化的Kohonen神经网络”中存在的方法的微小C实现。仅此一点就好了,因为你不再依赖封闭的未知实现。
原文(57 KB),tinypng.org(16 KB),pngnq(17 KB):
使用ImageMagick,我可以获得256种颜色的最佳量化,使用LAB颜色空间和Floyd-Steinberg的抖动:
convert input.png -quantize LAB -dither FloydSteinberg -colors 256 output.png
这会产生16 KB的png,但它包含更多的视觉伪像:
答案 2 :(得分:1)
使用ImageMagick时遇到问题吗?它有一组丰富的量化函数,如
bool MagickQuantizeImage( MagickWand mgck_wnd,
float number_colors,
int colorspace_type,
float treedepth,
bool dither,
bool measure_error )