我想在OSX上缩小png或jpg。我只想缩小而不影响图像质量。
like tinypng.org如何使用目标C压缩图像(png,jpg等)C
有没有推荐的库?我只知道imagemagick。有没有办法做到这一点本地?或另一个库缩小/压缩图像,而不影响图像质量?
我的目标是缩小文件大小,例如:
logo.png >> 476 k before shrink
logo.png >> 50k after shrink
编辑:要明确,我想要压缩的文件,而不是图像分辨率的大小。
我想在OSX上缩小png或jpg。我只想缩小而不影响图像质量。
like tinypng.org如何使用目标C压缩图像(png,jpg等)C
有没有推荐的库?我只知道imagemagick。有没有办法做到这一点本地?或另一个库缩小/压缩图像,而不影响图像质量?
我的目标是缩小文件大小,例如:
logo.png >> 476 k before shrink
logo.png >> 50k after shrink
编辑:要明确,我想要压缩的文件,而不是图像分辨率的大小。
TinyPNG.org通过使用图像量化工作 - 图像中的相似颜色被转换成HSV或RGB模型,然后根据距离合并。
它是如何工作的?
...
当您上传PNG(便携式网络图形)文件时,图像中的相似颜色被合并。这种技术被称为“量化”
...
源:http://tinypng.org
这里的回答概括这样的方法:https://stackoverflow.com/a/492230/556479。
也有与指如何使用Objective-C的上的Mac OS做到了这个问题的一些答案:在深入指导How do I reduce a bitmap to a known set of RGB colours
你为什么假设它使用HSV?它可以像Lab,HSB,HSI,YCbCr等等,甚至RGB。当然,这些链接都没有说明tinypng.org如何做。有太多的方法来执行量化来试图猜测该服务完全做了什么。 – mmgp 2013-02-08 22:59:22
我访问过的大多数参考文献都提到了使用HSV和RGB的算法,这就是我假设的原因。而且,是的,当然这些链接并不能说明tinypng是如何实际做到的,我没有说他们做过。 – 2013-02-08 23:00:50
我建议使用http://pngnq.sourceforge.net,它会比ImageMagick给出更好的结果,对于http://tinypng.org中给出的单个示例,它也会产生非常类似的输出。它是“Kohonen神经网络用于最佳颜色量化”文章中的方法的微小C实现。由于你不再依赖封闭的未知实现,这本身就更好。
原件(57 KB),tinypng.org(16 KB),pngnq(17 KB):
使用ImageMagick,256个色我能得到最好的量化使用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)
你需要明确,你的意思是你想减少图像的大小,或者的大小文件? (请记住,任何*文件*压缩必须使用可以被阅读应用程序识别的算法来完成。) – 2013-02-08 22:10:02
您是否知道tinypng.org使用的方法?我的建议是首先了解所做的事情,如何在任何语言/库中做到这一点,然后才开始担心如何特别在Objective-C中实现它。它执行某种形式的量化,但确切的细节在任何地方都不可用。这意味着我们也无法知道该方法是否对某些给定的输入产生了不好的结果,而没有将大量不同的png图像上传到服务并检查结果。最后,这种转换确实会影响图像质量。您无法执行不包含有损压缩。 – mmgp 2013-02-08 22:38:27
不,我不知道tinypng.org的方法。我只是想压缩没有可见的图像质量丢失。在tinypng.org我已经读过,他们使用的方法是不可用的Photoshop等。 – brush51 2013-02-08 22:42:41