iOS中兩種壓縮圖片的方法

這是官方的解釋:

UIImagePNGRepresentation(UIImage*__nonnullimage);// return image as PNG. May return nil if image has no CGImageRef or invalid bitmap format]

UIImageJPEGRepresentation(UIImage*__nonnullimage,CGFloatcompressionQuality);//return image as JPEG. May return nil if image has no CGImageRef or invalid bitmap format. compression is 0(most)..1(least)

UIImageJPEGRepresentation方法需要兩個參數:圖片的引用和壓縮系數,而UIImagePNGRepresentation方法僅僅需要一個參數:圖片的引用。UIImagePNGRepresentation方法在耗時上比UIImageJPEGRepresentation耗時,圖片數據量更大,使用 UIImagePNGRepresentation讀取照片數據的時候有可能會照成卡頓。兩個方法返回的數據都是NSData類型。

例如:

同樣是讀取攝像頭拍攝的圖片,UIImagePNGRepresentation(UIImage *image)返回的數據量大小為199K,而UIImageJPEGRepresentation(UIImage *image,1.0)返回的數據量只有140K,比前者少了50多K;而且如果對圖片的質量要求不那么高的話,還可以通過設置壓縮系數進一步減少數據量,降低壓縮系數后UIImageJPEGRepresentation(UIImage *image, 0.5),返回的數據大小只有11K,大大壓縮了圖片數據量,而且從視圖角度看,圖片的質量并沒有明顯降低。所以,在讀區圖片數據內容的時候,建議優先使用方法UIImageJPEGRepresentation(UIImage *image, CGFloatcompressionQuality)

代碼:
NSData *data = nil; if(!UIImagePNGRepresentation(image)) { data =UIImageJPEGRepresentation(image,0.1); }else{ data =UIImagePNGRepresentation(image); }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容