2016-01-21 34 views
0

嗨,我試圖壓縮一個UIImage我的代碼是像這樣:減少一個UIImage的質量(壓縮),

var data = UIImageJPEGRepresentation(image, 1.0) 
    print("Old image size is \(data?.length) bytes") 
    data = UIImageJPEGRepresentation(image, 0.7) 
    print("New image size is \(data?.length) bytes") 
    let optimizedImage = UIImage(data: data!, scale: 1.0) 

打印出來是:

Old image size is Optional(5951798) bytes 
New image size is Optional(1416792) bytes 

後來在應用程序我將UIImage上傳到網絡服務器(它首先轉換爲NSData)。當我檢查大小時,它是原始的5951798字節。我在這裏做錯了什麼?

+0

如何在發送到WebServer之前轉換爲NSData? – Larme

+0

將數據轉換回UIImage可以清除任何壓縮設置。 – Sulthan

回答

1

A UIImage提供了可用於將圖像渲染到屏幕的圖像的位圖(未壓縮)版本。圖像的JPEG數據可以通過降低圖像的質量(有效顏色變化)來壓縮,但這只是在JPEG數據中。一旦壓縮的JPEG被解壓縮到UIImage它再次需要完整的位圖大小(這是基於顏色格式和圖像尺寸)。

基本上,保持最佳質量的圖像,你可以在上傳之前進行顯示和壓縮。

0

這個數據發送到服務器數據= UIImageJPEGRepresentation(圖像,0.7),而不是發送optimizedimage到服務器。

您已將圖像壓縮爲數據。所以它會重複處理(重置爲原始大小)。