2012-11-14 51 views
3

我需要通過互聯網發送UIImage,但到目前爲止我一直有一些問題。如何通過網絡傳輸小UIImages,質量損失最小?

我目前採取UIImage,使它成爲第16維,將其轉換爲NSData,然後使用NSData + base64創建一個NSString。然後,我將這作爲JSON請求的一部分傳輸到服務器。

大多數情況下,這個功能完美無缺。

但是,文件大小很大。在蜂窩連接上,圖像可能需要大約10秒鐘才能加載。

如何通過網絡傳輸UIImage,使其很小並保持質量?即使當我將它設置爲以前的像素數的第16個時,照片也可以是1.5MB。我想得到300KB左右。

使用zip或gzip壓縮它似乎只會導致忽略(< .1MB)節省。

感謝, 羅伯特

+0

發送原始數據而不是base64編碼的字符串。這將佔用更少的帶寬。 – rmaddy

回答

2

我建議把它作爲一個JPEG或一些壓縮PNG,使用方法類似

 UIImageJPEGRepresentation(UIImage *image, CGFloat compressionQuality) 

然後發佈NSData對象您從獲得。你應該可以通過使用compressionQuality變量來找到一個很好的ssize /質量折衷。

+0

Jpeg將會有很大的幫助。 – Dancreek

1

你沒有說你如何將圖像轉換爲數據。你提到「照片」。如果你的圖片是照片,你應該使用UIImageJPEGRepresentation,而不是UIImagePNGRepresentation。您必須使用compressionQuality參數來查找能夠平衡數據大小和圖像質量的壓縮級別。