Google Photos へ WebP 圧縮したファイルをアップロード
2021年5月末で Google Photos の実質無料が終わってしまい、その代替をどうするか問題。Google Photos は適切な共有もでき、アプリも写真検索・閲覧用途でも使いやすく(顔認識もあるしね)、また今あるフォトストレージの中では一番なくならなさそう、ということで代替サービスは特に見当たらなかった。
今の Photos の運用では、ちゃんとした写真(= 選定した写真)は Lightroom CC のクラウドに RAW として保存していて、Google Photos へアップロードしている写真はミラーレスのバックアップ用途 & 妻がブログで使う用の撮って出しの jpeg。これを以前書いた仕組みと、これまた以前作ったオリンパスカメラのAPI経由でのFTPアップロードでアップロードしている。
jpeg は一枚につき、これまでの Photos の無料枠の16MPだと4MB前後のファイルサイズになる。今のペースだと一年間で3万枚ぐらい撮ってるので、このままアップし続けると単純計算で年間120GBぐらいの容量を使ってしまう。
Google Photos の容量カウントはアップロードしたオリジナルファイルサイズに左右されるようで、つまりこのファイルサイズが小さければ小さいほど良い。試しに WebP を cwebp コマンド経由で以下のように変更する(何も指定しないと q は 75 になる)と、
cwebp -preset photo -resize 2894 2170 -metadata exif input.jpg -o output.jpg
ファイルサイズは平均300KB程度で、これなら3万枚でも年間9GBなのでだいぶ容量節約になる。なお長辺4096pxサイズなら平均1MB強程度だった。
また長辺は 2894px として resize のサイズを別プログラムで計算して決めている。cwebp コマンド単体ではアスペクト比固定で長辺指定の resize は出来ないようだった。なお2894px は web で使うには困らなさそう & 350dpi のA5サイズのピクセルなのでこのサイズ。バックアップ用途なのであまり深くは考えていない。また metadata は他にも ICC や XMP があるが、サイズが割と大きかったので exif 以外は削除している。また exif も40KB ぐらいあるので、不必要な人は削除すればもっとダイエットできる。
WebP は 2020年11月頃の macOS / iOS / Safari のアップデートで Apple 製品でも普通に閲覧できるようになり、大体どのOSでも最新の状態なら見れるようになった。また妻が使っている、はてなブログに Google Photos から貼り付ける機能も、WebP 画像は jpeg に変換されはてなフォトライフにアップロードされるよう(exifがちゃんとしてるかは調べてないけど)なので問題なし。
というわけで、しばらくはこの方法(ftpでアップロードした画像をwebp変換した後にアップロード)で運用してみる。なお jpeg からの webp 変換はこんな感じのスクリプトで適当に行っている。