2013-02-08 84 views
1

我想在OSX上縮小png或jpg。我只想縮小而不影響圖像質量。
like tinypng.org如何使用目標C壓縮圖像(png,jpg等)C

有沒有推薦的庫?我只知道imagemagick。有沒有辦法做到這一點本地?或另一個庫縮小/壓縮圖像,而不影響圖像質量?

我的目標是縮小文件大小,例如:

logo.png >> 476 k before shrink 
logo.png >> 50k after shrink 

編輯:要明確,我想要壓縮的文件,而不是圖像分辨率的大小。

+1

你需要明確,你的意思是你想減少圖像的大小,或者的大小文件? (請記住,任何*文件*壓縮必須使用可以被閱讀應用程序識別的算法來完成。) – 2013-02-08 22:10:02

+1

您是否知道tinypng.org使用的方法?我的建議是首先了解所做的事情,如何在任何語言/庫中做到這一點,然後纔開始擔心如何特別在Objective-C中實現它。它執行某種形式的量化,但確切的細節在任何地方都不可用。這意味着我們也無法知道該方法是否對某些給定的輸入產生了不好的結果,而沒有將大量不同的png圖像上傳到服務並檢查結果。最後,這種轉換確實會影響圖像質量。您無法執行不包含有損壓縮。 – mmgp 2013-02-08 22:38:27

+0

不,我不知道tinypng.org的方法。我只是想壓縮沒有可見的圖像質量丟失。在tinypng.org我已經讀過,他們使用的方法是不可用的Photoshop等。 – brush51 2013-02-08 22:42:41

回答

2

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

參見維基百科的更多:http://en.wikipedia.org/wiki/Color_quantization

+0

你爲什麼假設它使用HSV?它可以像Lab,HSB,HSI,YCbCr等等,甚至RGB。當然,這些鏈接都沒有說明tinypng.org如何做。有太多的方法來執行量化來試圖猜測該服務完全做了什麼。 – mmgp 2013-02-08 22:59:22

+0

我訪問過的大多數參考文獻都提到了使用HSV和RGB的算法,這就是我假設的原因。而且,是的,當然這些鏈接並不能說明tinypng是如何實際做到的,我沒有說他們做過。 – 2013-02-08 23:00:50

1

我建議使用http://pngnq.sourceforge.net,它會比ImageMagick給出更好的結果,對於http://tinypng.org中給出的單個示例,它也會產生非常類似的輸出。它是「Kohonen神經網絡用於最佳顏色量化」文章中的方法的微小C實現。由於你不再依賴封閉的未知實現,這本身就更好。

原件(57 KB),tinypng.org(16 KB),pngnq(17 KB):

enter image description hereenter image description hereenter image description here

使用ImageMagick,256個色我能得到最好的量化使用LAB色彩空間和抖動由弗洛伊德斯坦伯格:

convert input.png -quantize LAB -dither FloydSteinberg -colors 256 output.png 

這將產生一個16 KB PNG,但它包含更多的視覺僞影:

enter image description here

1

使用ImageMagick時出現問題嗎?它擁有豐富的量化功能,如

bool MagickQuantizeImage(MagickWand mgck_wnd, 
          float number_colors, 
          int colorspace_type, 
          float treedepth, 
          bool dither, 
          bool measure_error) 

這是一個非常徹底的guide to quantization using imageMagick

+0

你可以使用ImageMagick從http://i.stack.imgur.com/eJcam.png製作一個好的量化的png嗎?我可能包括我在這裏包括的答案中可以得到的最好的答案,但這是一個不好的結果。 – mmgp 2013-02-09 16:16:28

+0

@MMgp,採取的措施,迄今爲止我的結果是相當差,相比tinypng ... – foundry 2013-02-10 01:51:25