その他
UIImageJPEGRepresentationのcompressionQualityでサーバ、ネットワーク負荷減少
[環境]
Xcode:8.3.3
Swift:3.1
iOS:10.3
こんにちわ。
iOSアプリで、
1. カメラ起動
2. jpegにする
3. サーバにアップロード&DBに登録
といった事をした場合に、[2]で利用するUIImageJPEGRepresentationの話です。
Appleドキュメントでは、以下のようになっています。
1 |
func UIImageJPEGRepresentation(_ image: UIImage, _ compressionQuality: CGFloat) -> Data? |
今回のお話は、compressionQualityの方です。
リリース当初は、compressionQualityを1にしていました。
compressionQualityは、画像サイズ(pxなど)ではなく、圧縮率です。
pxレベルで言えば、正方形にトリミングしてアップロードさせていました。
750px x 750pxのような形です。
少しでも高速化、また、画像は登録するだけではなく表示にも使うので
ユーザ側iPhoneでのネットワーク負荷を減らすためにもここの調整をしてみました。
試したのは、
1, 0.9, 0.8
です。
結果は以下。
■1 (630KB)
■0.9 (162KB)
■0.8 (123KB)
※写真はhttp://www.freegreatpicture.com/より。
そして、目視でぼやけなども確認してみましたが、これは写真の利用目的にもよりますが、今回は0.8で十分でした。。。
ほとんどの場合でも0.9で十分ではないでしょうか?
特に1から0.9の差がすごいですね。
検証していませんが、.pngにする UIImagePNGRepresentation でも同じ感じかもです。
0.9が個人的にはお勧めでした。
村本訓一
http://kunikazumuramoto.com株式会社lord代表。WEBデザイナー⇒ディレクター⇒プロデューサーです。2010年から起業しています。社会に出てからずっとWEB屋です。 新しいネットサービス、デバイス、コミック、本、映画好きです。最近は急にプログラマーっぽい事もやってます。