iPhone/iPadへの写真同期に最適な解像度・品質・ファイルサイズをキッチリ調査した
2018/04/07
iPhoneやiPadに写真を同期する場合、写真のサイズはどんなサイズで同期するのが最適なのかキッチリ調査しました。
同期する際にiTunesが画像を自動で再編集してしまうので、結構ややこしいことになっていました。
目次
iOSに同期すると写真が重くなる!?
iTunesを使うと、iPhoneやiPadに写真・ビデオを同期することができます。この機能を使えば、過去にデジカメで撮った写真やビデオ、それにiPhoneで撮ったもののPCに保存してある写真などをiPhoneに入れておくことができます。
しかし同期すると不思議なことが起こります。PCでのファイルサイズとiOS上でのファイルサイズが一致しません。iOSの方が小さいなら別にいいんですが、同期する写真によってはPC上よりiOS上の方が占有容量が増えることがあります。ファイルサイズが大きくなっても元より画質が上がることは当然ないので、これは気持ち悪いですね。調べてみるとこの問題に悩む人もいる様子。
[価格.com] 写真同期するときのサイズ(容量)が大きくなります
写真の数が100や200なら別に気にしませんが、私は過去の全デジタル写真をiPhoneに入れているので、同期する写真は60,000枚を超えています。この枚数だと容量が無用に消費されるのは気になります。
ちなみにもの問題が起きるのは画像だけで、ビデオでは起きないようです。
※ 現状圧倒的にJPEG写真が多いことを考慮し、以後の「写真」はすべてJPEGファイルを想定しています。
iOSへの写真同期の流れ
写真同期の流れは以下の通りです。
- 同期すべき画像・動画ファイルをチェックする
- 画像ファイルは何らかの処理をして .ithmb ファイルに変換し、「iPod Photo Cache」に入れる
- 動画ファイルと ithmbファイル をiPhone/iPadに転送する
最終的に転送されるのは「ithmbファイル」ですが、iOSはそれを写真として表示することができるようになっています。
ここで問題になるのは「何らかの処理」が何なのか? ということです。
ithmbファイルはJPEG+メタデータ
ithmbファイルのファイル名は、「T761.ithmb」のように「T[数字].ithmb」の形式になっています。これを拡張子だけ .jpg にすると普通にJPEGファイルとして扱うことができます。
ithmbファイルの中身を見てみると、JPEGファイルのデータを含みつつ、メタデータ(画像情報を示すデータ)を付加した形式になっているようです。JPEG部分も元画像そのままではなく、何かの処理がなされています。この処理の結果、元のJPEG画像ファイルよりもithmbファイルの方が大きくなってしまうようです。
iPhoneの容量を節約するためにせっかく写真を縮小したのに、同期で大きくなってしまっては意味がありません。どれくらいに縮小するのが効果的なのか気になります。
大きな画像は縮小される
iPhoneのカメラも高画質になり、撮影される写真のサイズも大きくなっています。歴代iPhoneで撮影した写真の解像度がどんどん上がっていることが分かりますね。
機種 | 写真解像度 (バックカメラ) |
---|---|
iPhone 7/6s | 4032×3024 |
iPhone 6/5s/5c/5/4s | 3264×2448 |
iPhone 4 | 2592×1936 |
iPhone 3GS | 2048×1536 |
iPhone 3G | 1600×1200 |
この高解像度な写真をiTunesで同期すると、サイズが小さくなってしまいます。どんなサイズの写真がどんなサイズに編集されるのかが気になるところですね。
いろんなサイズの画像を用意して調査
画像解像度やファイルサイズを変更したときに、同期サイズと画質がどう変化するかを調査しました。使ったのは以下の写真です。それなりに複雑さのある写真です。
元の画像は6000×4000ピクセル、Exifデータを含めて6.56MBというサイズです。これを色んなサイズにします。
解像度 | 6000×4000 4000×2667 3000×2000 2000×1333 1500×1000 1000×667 |
---|---|
JPEG品質 (高いほど高画質) |
100 80 60 40 20 |
調査環境・調査方法(読み飛ばしてもOK)
Windows 10 上の iTunes 12.5.1.21 で、iOS 10.0.2 搭載の iPhone 6 に同期しました。
軽く調べた感じでは同期先デバイスの画面解像度によって縮小サイズが変化するという噂があるようですが、うちの環境で3台の異なる環境(6s 128GB+iOS9、6 64GB+iOS10、SE 64GB+iOS9)に同期した際のithmbファイルはバイナリレベルで一致していました。ただ、iPhoneとiPadでは異なっているので、それについては後述します。
調査方法
調査の流れは以下の通りです。最終的に知りたいのはiPhoneに同期される画像のファイルサイズと画質です。
まず、元の画像をいくつかのサイズ・画質に圧縮します(下向き矢印)。圧縮した画像をiTunesでiPhone/iPadに同期します。同期する際に作られるithmbファイルがiPhoneに転送されるファイルそのものなので、そのファイルサイズを確認します。
画質は元の画像とithmbファイルの間で比較します。画質比較に使うSSIMという評価指標は、異なる解像度では比較できないようですので、「3375×2250」という同じ解像度にして比較します。画質比較の結果は最大値1(完全一致)の数値で表されます。
3375×2250 で比較する理由
「3375×2250」の根拠についても説明しておきます。
まず前提として、異なる画素数の画像を画質比較するには、ある程度高い解像度に変換して比較するのが妥当だと言えます。なぜなら、低い解像度にすると元画像からも情報が欠落するので、「元画像からどれだけ劣化したか」を正しく判定できないからです。一方で解像度を上げるほどファイルサイズは増大するので、大きければ大きいほど良いとも言い切れません。
iPhoneでは解像度の低い写真であっても画像を拡大できるようになっています。拡大できるサイズは画面解像度の約3倍までのようです(iPhone 6s + iOS 9で確認)。高解像度の写真では1倍サイズまで拡大できます。つまり、「画面解像度の3倍」と「画像の解像度」のうちの高い方までは拡大できるということです。
iPhone6/6s/7の画面解像度、1334×750ピクセルで考えてみましょう。例えば1500×1000ピクセルに縮小した画像は、最小では画面解像度に収まるサイズ、1125×750ピクセルで表示されます。拡大するとその3倍、3375×2250ピクセルで表示されます。iPhoneに同期される画像は3375×2250よりは小さくなる(後述)ので、同期される画像の最大拡大サイズは常に3375×2250(アスペクト比3:2の場合)になります。
つまり、同期した写真をiPhone上で画質を確認できるのは3375×2250ピクセルが限界ということです。iPhone上での画質を比較する以上、これ以上高い解像度で比較する意味はありません。元画像をiTunes以外(Dropboxアプリなど)で取り込めば本来の解像度(6000×4000など)で表示できてより大きく拡大することができますが、同期された画像は3375×2250までしか拡大できないのでそれ以上の拡大は画質比較の意味をなしません。
なので、「iPhone上で表示できる範囲」で「同じサイズで比較できる」という条件のもと、「最大限拡大して画質を確認」するのであれば、3375×2250ピクセルを比較すれば良いということになります。
JPEGを再変換する以上画質のさらなる劣化は避けられませんが、今回は相対的な比較をするので十分だと思います。
調査に使うソフト
中心となる画質&サイズ変更(下向き矢印)は、フリーソフトのImageMagickのconvert.exeを使いました。オプションは以下の通り。
convert.exe -resize "3000x3000>" -quality 80 -auto-orient -strip -format jpg "original.jpg" "3000-80.jpg"
画質比較用の再変換は以下の通り。
convert.exe -resize "3375x2250!" -quality 100 -format jpg "3000-80.jpg" "3000-80-3375x2250.jpg"
画質チェックにはffmpegを使いました。
ffmpeg.exe -i "original-3375x2250.jpg" -i "3000-80-3375x2250.jpg" -filter_complex ssim -an -f null -
結果
画像サイズ
まず画像サイズです。ここにはiPad mini 2の結果も入れておきます。
JPEG画像 | iPhoneに同期された画像 | iPad miniに同期された画像 |
---|---|---|
6000×4000 | 2304×1536 | 4608×3072 |
4000×2667 | 2302×1536 | 4000×2667 |
3000×2000 | 2304×1536 (一部2302×1536) |
3000×2000 |
2000×1333 | 2000×1333 | 2000×1333 |
1500×1000 | 1500×1000 | 1500×1000 |
1000×667 | 1000×667 | 1000×667 |
さらにアスペクト比を変えて調べてみると、iPhoneの同期サイズは「4096×1536に収まるサイズにする」というルールになっていました。4096:1536=8:3なので、かなり細長い画像でない限り「短辺を1536ピクセル以内」という認識で良さそうです。
iPadではその倍で「8192×3072に収まるサイズ」、多くの画像では「短編が3072ピクセル以内」というルールになっているようです。
ファイルサイズ&画質の上限
ファイルサイズと画質をグラフにしました。棒グラフがファイルサイズ、折れ線グラフが画質です。下の20~100の数字はJPEG変換時の品質設定で、右端の「元」は元画像をそのまま同期した場合です。まずはiPhone 6の結果から。
まず見て欲しいのは棒グラフ。JPEG画像のファイルサイズが青の棒グラフ、iOSに同期したファイルサイズが赤の棒グラフです。JPEGのファイルサイズは品質設定値が高いと大きくなっていますが、iOSに同期されるサイズはおよそ1MBで頭打ちとなっています。実際の数値では、[3000×2000-品質40]以降、1,001~1,036KBの範囲に収まっています。iPhoneではどうやら「ファイルサイズは約1MB(約1,024KB)までにする」というルールがあるようです。
一方で、品質値を低く設定した画像では、元のサイズ(青の棒)より同期サイズ(赤の棒)の方が大きくなっているのが興味深いところ。品質値を低くすると、画質は上がっていないのにファイルサイズが大きくなってしまう(=無駄が発生する)ということになりますね。
画質を表した折れ線グラフを見てみましょう。同期されるithmbファイル(赤折れ線)は元の画像(青折れ線)より画質は低下します。品質値20で逆転しているのはSSIMの誤差(というか偶然)でしょう。解像度やファイルサイズが制限される3000×2000以上はもちろんのこと、解像度が低くても品質値が100だと画質は大きく低下しています。
続いてiPad mini 2の結果。
解像度の上限と同様に、ファイルサイズの上限もiPhoneより引き上げているようです。4000×2667までは赤の棒グラフが右上がりですが、6000×4000では品質値を変えてもファイルサイズにほぼ変化がありません。この辺りに上限があるようです。6000×4000での同期ファイルサイズは3,042~3,192KB。iPadではどうやら「ファイルサイズは約3MB(約3,072KB)までにする」というルールになっているようです。
上限が上がったこと以外、画質やファイルサイズについての傾向はiPhoneと同じのようです。
適切な設定は?
画質とファイルサイズのバランスが良い場所を探してみましょう。さっきのグラフから同期される画像のみを抜き出します。まずはiPhoneの結果。
ファイルサイズが小さく(棒が短く)画質が高い(折れ線が高い)ものが「おいしい設定」ということになります。良さそうなのものには青三角で印を付けました。
品質設定が高い方が効率的
各サイズで品質設定を高くしたものが良さそうです。品質設定を低くすればファイルサイズは小さくなるのですが、iPhoneに同期するときに作られるithmbファイルは品質が低くても結構大きくなってしまいます。なので同期元画像の品質設定は高い方が有利と言うことです。
iPadの結果も見てみましょう。iPadも同じ傾向ですね。
一方で、品質値を100にした画像はPC上でのファイルサイズが大きくなってしまいます。品質設定80と100ではPC上でのサイズが4倍ほど違ってきます。
上のグラフは1500×1000でのもの。JPEGの変換では品質値を100に近づけると急激にファイルサイズが大きくなる傾向があるので、いくらiOS上での画質が良いとは言っても品質を100にするのは考え物です。高い品質での結果を細かく見てみましょう。1536×1024ピクセルに固定して、品質80~100での画質とファイルサイズの結果です。参考までに、2048×1365・品質60の結果も載せてあります。
iOS上での画質は、品質95で頭打ちとなっています。iOS上のファイルサイズも品質95(iOS上545KB)が最大です。一方PC上を見ると、品質100でのファイルサイズが異様に大きいです。
なので、理想的な設定は「iOS上のファイルサイズだけを見れば品質95、PC上のファイルサイズも気にするなら品質90、あとはiPhoneの容量に合わせて画像の解像度を調整する」ということになります。
まとめ
同期したい画像の数とiPhone/iPadの容量に合わせて、以下の様に設定すれば最大限高画質に同期できます。解像度は切りの良い数字(2の累乗の倍数かつ3で割れる)に調整してあります。
iOS 1GBに同期できる枚数 1枚当たりのサイズ(PC上/iOS上) |
iPhoneに同期する場合 | iPadに同期する場合 |
---|---|---|
300枚 4MB / 3MB |
- | 元画像をそのまま同期 |
1,000枚 1.2MB / 1MB |
元画像をそのまま同期 | 全画像を2304×2304以内・品質95に縮小し、 縮小した画像を同期 |
2,000枚 600KB / 500KB |
全画像を1536×1536以内・品質95に縮小し、縮小した画像を同期 | |
3,000枚 400KB / 300KB |
全画像を1152×1152以内・品質95に縮小し、縮小した画像を同期 | |
6,000枚 200KB / 150KB |
全画像を768×768以内・品質95に縮小し、縮小した画像を同期 |
※ サイズや枚数はすべて概算。同期画像の複雑さによる。
ちなみに
今回サンプルに使った写真は実写(スクリーンショットなどでない)の中でも結構複雑なタイプのものです。青空や食べ物など複雑さの低い画像では、同じ品質設定で圧縮してもPC上/iOS上共にもっと軽くなります。参考までに今回のサンプルを2048×2048以内・品質60・Exifありで圧縮すると383KB、同じように圧縮した9,000枚の様々な画像(スクリーンショットなどを含む)の平均サイズは209KBです。
私は今まで「2048×2048以内・品質60」にした画像を同期していましたが、今回調べた結果「1536×1536以内・品質90」にすればiOS上画質をほとんど悪化させることなくiOS上のサイズを20%ほど削減できることが分かりました。