
WordPressにアップロードしたPNG画像がJPGになってるんですけど、どういうこと!?
ブログに慣れないうちは画像の入れ替えをよくするのですが、その際に画像の形式が不一致でエラーになってしまいました。
自分で変換を指定していたり、通知があるならまだしも、勝手に変換されるのは困ります。
調べたところ、原因は「EWWW Image Optimizer」という画像圧縮プラグインでした。
対処方法も判明し無事に解決しましたので、この記事でまとめていきます。
【事象】PNG画像をアップロードするとJPGに変換される
PNG形式の画像をWordPressにアップロードすると、自動でJPG形式に変わっていました。

アップロード時に特に通知メッセージなどは出なかったので、気づくまでに時間がかかりました…
原因と対処法
原因は「EWWW Image Optimizer」という画像圧縮プラグインでした。
影響する原因が2つありましたので、それぞれご説明します。
対処法①:EWWW Image Optimizer の設定「PNGをJPGに変換」をOFF
EWWW Image Optimizer には「PNGをJPGに変換」という設定があります。
この設定をON(チェックあり)にすると、PNG画像がアップロード時にJPG画像に変換されます。

しかし、やっかいなことにこの設定をONにしても、必ず変換されるわけではありません。
細かい条件は不明ですが、ファイルサイズが小さいなど、JPGに変換しても効果がない場合はこの設定をONにしても変換されないようです…
逆に、以下の条件を満たす場合は、設定をOFF(チェックなし)にしても勝手に変換されます。
- PNGのファイルサイズが300KB以上
- PNGが透過でない(画像に透明部分がない)
- JPGに変換するとファイルサイズが小さくなる

設定に関係なく変換されるとは思いませんでした
自動で変換されるという説明はプラグインのサポートページ(英語)の書き込みにあります。(設定画面やヘルプに書いてほしいのですが…)
EWWW IO will convert any image from PNG to JPG during upload if the following conditions are met, regardless of the settings on the Convert tab:
- The PNG image is over 300kb — that’s a good clue the image isn’t suited to be in the PNG format.
- The PNG image does not have transparency, since JPG doesn’t support it.
- Converting to JPG produces a smaller image.
If you really think your images should remain in the PNG format, you can add this line to your wp-config.php file:
define( ‘EWWW_IMAGE_OPTIMIZER_DISABLE_AUTOCONVERT’, true );
https://wordpress.org/support/topic/ewww-converting-png-to-jpg-this-setting-is-unchecked/
Google翻訳すると以下の通りです。
EWWW IO は、以下の条件を満たす場合、「変換」タブの設定に関わらず、アップロード時にすべての画像を PNG から JPG に変換します。
- PNG 画像が 300KB を超えている場合 — これは、画像が PNG 形式に適していないことを示しています。
- JPG では透過がサポートされていないため、PNG 画像は透過されません。
- JPG に変換すると、画像サイズが小さくなります。
どうしても画像を PNG 形式のままにしたい場合は、wp-config.php ファイルに次の行を追加してください。
define( ‘EWWW_IMAGE_OPTIMIZER_DISABLE_AUTOCONVERT’, true );
このため、根本的な対処には次の「対処法②」が必要です。
対処法②:wp-config.phpに自動変換を無効にするコードを追加
先ほどのサポートページの案内のとおり、wp-config.phpに次のコードを追加すると、pngからjpgへの自動変換を無効にできます。
// EWWW Image Optimizer のPNG→JPG自動変換を無効にする
define( 'EWWW_IMAGE_OPTIMIZER_DISABLE_AUTOCONVERT', true );
wp-config.phpが壊れるとWordPressが動作しなくなる可能性がありますので、バックアップを取ったうえで注意して作業しましょう。
コードの追加先は「wp-config.php」
コードの追加先が「functions.php」と書かれているサイトもありますが、正しい追加先は「wp-config.php」です。
- wp-config.php:環境設定やプラグインの動作制御に関わるグローバル設定向け
- functions.php:テーマ固有の機能拡張や表示系のカスタマイズ向け
先ほどのサポートページでも「wp-config.php」に追加するように書いてあります。
If you really think your images should remain in the PNG format, you can add this line to your wp-config.php file:
define( ‘EWWW_IMAGE_OPTIMIZER_DISABLE_AUTOCONVERT’, true );
最初は「functions.php」に記載して動作していたのですが、この記事を書いている途中で「wp-config.php」が正しいと知りました(笑)
今は「wp-config.php」に変更して、問題なく動作しています!
まとめ:PNG画像がJPGに勝手に変換される原因はEWWW Image Optimizer
以上、PNG画像がJPGに勝手に変換される原因はEWWW Image Optimizerでした。
プラグインとしては、「透過じゃないPNGはJPGに変換したほうがファイルサイズが減ってハッピーでしょ?」ということなんでしょうね。

せめて設定画面でコントロールできたり、通知などしてくれれば分かりやすいんですけどね。
最初は何が起きているのか分からず困惑しましたが、この記事が誰かの役に立てば嬉しいです!