WordPressの画像アップロード時に自動でウェブ向けの大きさにリサイズ

運用しているWordPressで10MB以上の巨大な画像ファイルがアップロードされていて、そのせいでサイトの表示速度が著しく遅くなっていたので対処。

最初はphp.iniでアップロードできる画像の容量を1MBに絞ったのだが「画像がアップできない」というイシューが上がって来たので自動で対処することにした。
操作しているのがあんまりPCに慣れ親しんでいないユーザーゆえ。

Imsanity

さくっと結論を述べるとImsanityというプラグインを使うとまさに望んだ通りの動作だった。

WordPress.org

Imsanity

Imsanity は巨大な画像のアップロードを自動的にサイズ変更します。投稿者は巨大な写真をアップロードしていますか? 手動スケーリングに疲れましたか? 不満への救済です!
https://ja.wordpress.org/plugins/imsanity/

画像をアップロードした際に自動で以下のような変更を加えてくれる。

  • タテヨコを指定したサイズに変更
  • JPEGを圧縮して容量を削減
  • PNGをJPEGに変換(オプション)

管理画面から既存の画像ファイルも一括で処理できるので、過去のファイルも一気に変換することができた。
PNGをJPEGに変換するのはPNGだと十分にサイズを削減できないため。

本番適用に当たっては事前に検証環境を準備して変換を実施。リサイズ前の本番とリサイズ後の検証環境の表示を比較したが、どちらがどちらと区別がつかないくらい遜色のない変換結果だった。
問題なさそうなので本番適用。念のため本番のuploads以下をバックアップしておいたが、そのバックアップを使うことなく今に至る。

Jpegoptim

Imsanityが見つかったので使うことはなかったが、こちらはコマンドラインからJPEGの圧縮率を変更して容量を削減できる優れたツール。

GitHub

tjko/jpegoptim

jpegoptim - utility to optimize/compress JPEG files
https://github.com/tjko/jpegoptim

最初はこれをCronで定期的に実行しようと考えていた。
WordPress以外でも何かの際に役に立ちそうなのでメモしておく。