UIImageJPEGRepresentation 與 UIImagePNGRepresentation 踩坑


UIImageJPEGRepresentation 與 UIImagePNGRepresentation

UIImageJPEGRepresentation 與 UIImagePNGRepresentation 

問題:

  1. 最近在項目中用到了圖片壓縮后上傳到服務器, 並還需要從服務器下載該圖片.
  2. 在壓縮的時候, 先根據當前屏幕寬高比做了一個尺寸縮放
  3. 然后使用 UIImageJPEGRepresentation 壓縮到100KB以下並上傳到服務器.
  4. 下載的時候使用 SD 的downloadImageWithURL 方法, 並用 UIImagePNGRepresentation 轉成 NSData 並使用 NSFileManager 寫入到沙盒.
  5. 然后在另一個功能中又需要讀取該圖片, 並判斷其大小. 發現實際占用的硬盤空間與服務器上存儲的圖片大小有很大的差別.

原因

  1. UIImageJPEGRepresentation 中的壓縮比例並不精確, 0.9才比較接近原圖.
  2. UIImageJPEGRepresentation 和 UIImagePNGRepresentation 由於其壓縮算法並不一樣(基於 JPEG 和 PNG 兩種圖片的原理, 具體可以參考這里), 所以如果對同一張圖片(尤其如果原圖是 png 格式)既使用 UIImagePNGRepresentation 又 UIImageJPEGRepresentation 交叉從 UIImage 轉換成 NSData, 那么其所占的硬盤空間前后會發生一個很大的變化.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM