WordPressでリサイズしたJPEG画像の画質が劣化する時の対処法

WordPressでリサイズしたJPEG画像の画質が劣化する時の対処法

WordPressでリサイズしたJPEG画像の画質が劣化する時の対処法

WordPressにはリサイズ機能があって、画像を挿入する際に「大サイズ」や「サムネイル」などからサイズを選ぶことができますね。

このリサイズ機能を使うと、デフォルトでは圧縮率90%なので、JPEGの画質が少し落ちます。

圧縮率については、wp-includes/deprecated.phpの3250行目あたりで定義されています。古いバージョンのWordPressだとmedia.phpで定義されていたみたいですね。

function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $dest_path = null, $jpeg_quality = 90 )

$jpeg_qualityを100にすれば、圧縮されずに画質を保つことができるのですが、コアファイルはなるべく変更したくありません。

functions.phpでリサイズ時の圧縮率を制御する方法が、かちびと.netさんに掲載されていたので、紹介したいと思います。

JPEG画像リサイズ時の圧縮率を変更する方法

JPEGをリサイズした時の圧縮率を変更するには、利用しているテーマのfunctions.phpに下記の記述を追加します。

なお、サーバーのPHPバージョンによって、記述方法が異なります。

PHP5.2以下の場合

add_filter('jpeg_quality', create_function('$arg','return 100;'));

もしくは


function jpeg_quality_callback($arg)
{
return (int)100;
}
add_filter('jpeg_quality', 'jpeg_quality_callback');

PHP5.3以上の場合

add_filter('jpeg_quality', function($arg){return 100;});

これで、画質の劣化を防ぐことができます。

あとがき

上述したコードでは圧縮率を100%にしていますが、数字の部分を変更すれば70%や60%にすることも可能です。

この記事が気に入ったら
いいね!してね♪

Twitter で

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です