はじめに
最近は、iPhone端末も昔に比べて飛躍的にカメラの性能も向上し、
高品質な写真を撮ることができます。
一消費者としては喜ばしい限りなのですが、エンジニアとしては喜んでばかりもいられません。
というのも、画像をクラウド上で保存する機能があった場合に、
容量と品質を天秤にかけざるを得ないことも、まだまだあるからです。
そこで今回は、画像をJPEG圧縮することで、どの程度の品質で容量が変わるのか実験してみたいと思います。
利用するメソッドは下記になります。
1
|
|
実験
早速、実験方法ですが、
jpegData
の引数である compressionQuality
に0.1刻みで0.0〜1.0の間を指定して、
結果容量を比較してみました。
実験①:イラスト画像
まずは、区切り線の明瞭なイラスト画像を用いて実験をしてみました。
1.0から0.9が極端に下がっていることがわかります。
また、0.1と0.0とでは画像容量に差分がない結果となりました。
実際に、画像を比較してみると、
compressionQuality: 1.0 の画像
compressionQuality: 0.5 の画像
compressionQuality: 0.0 の画像
のようになります。
当然ですが、1.0の方が全体的に滑らかで、0.0はかなり品質が落ちていることがわかります。
※画像はイラストレインからお借りしました。
実験②:写真
続いて写真で実験してみました。
イラストと同じく、1.0から0.9が極端に容量が下がっている一方で、
0.1から0.0は同じ容量となりました。
こちらも画像を比較してみると、
compressionQuality: 1.0 の画像
compressionQuality: 0.5 の画像
compressionQuality: 0.0 の画像
のようになります。 やはり0.0にまでなると品質劣化が肉眼でもわかりますね。
※画像は、ぱくたそからお借りしました。
因みに
JPEG圧縮のアルゴリズムは当然ながら、Swiftのメソッドを利用したからといって変わるわけではありません。
なので、Mac上で画像を書き出す際に品質を指定することで確認できます笑
JPEGのアルゴリズムに関しては、
などが参考になるかと思います。
まとめ
以上の実験からわかる通り、圧縮具合を変えることで容量に大きな変化が生まれますし、
当然ですが、それに伴い品質も劣化していきます。
サービス上で許容となる品質レベルは異なるでしょうし、慎重な意思決定が必要となることでしょう。
個人的には 0.5
でも全然気にならなかったりしますが、許容範囲広すぎでしょうか。。。笑
と言ったところで本日はここまで。