development_creative

この記事は1年以上経過しています。

【WordPress】プラグインなし!自動で画像を圧縮する便利コード

なんでもプラグインにするのは良くないよね

はい。筆者がブログを書くときはいつも念仏のように口走っております。
管理画面が煩雑になるのが個人的に本当に好きではない・・・。

自動画像圧縮コードはこちら

デフォルトでもwordpressには画像圧縮機能があるようですが、
カスタマイズしたい方もいらっしゃるかと思うので、こちらをご査収ください。笑

function.phpにこちらのコードをペーストしてください。

function my_theme_custom_image_compression( $file ) {
    $image_path = $file['file'];
    
    // 画像の拡張子を取得
    $image_extension = pathinfo( $image_path, PATHINFO_EXTENSION );
    
    if ( strtolower( $image_extension ) === 'jpeg' || strtolower( $image_extension ) === 'jpg' ) {
        // JPEG形式の場合の処理
        $image = imagecreatefromjpeg( $image_path );
    } elseif ( strtolower( $image_extension ) === 'png' ) {
        // PNG形式の場合の処理
        $image = imagecreatefrompng( $image_path );
    } else {
        // 他の形式の場合の処理
        return $file; // サポートされていない形式の場合は何もせずに返す
    }
    
    // 圧縮の品質を設定
    $compression_quality = 80; // カスタマイズ可能な品質値

    if ( strtolower( $image_extension ) === 'png' ) {
        // PNGの場合、9までの範囲で指定
        $compression_quality = 9; // カスタマイズ可能な品質値(0から9の範囲)
    }

    // 圧縮後の画像を保存
    if ( strtolower( $image_extension ) === 'jpeg' || strtolower( $image_extension ) === 'jpg' ) {
        imagejpeg( $image, $image_path, $compression_quality );
    } elseif ( strtolower( $image_extension ) === 'png' ) {
        imagepng( $image, $image_path, $compression_quality );
    }
    
    return $file;
}
add_filter( 'wp_handle_upload', 'my_theme_custom_image_compression' );

こちらをペーストすると、アップロードする際に処理が走り、
自動で画像が圧縮されるようになります。

また、変数:$compression_qualityの値をいじることで、品質を調整できます。

品質を比較してみた!

こんなこと、皆さんにお知らせするという前提がなければやらないんですが、
今回は良い記事にしたいなと思ったので、やってみる・・・。

まずはこちらが検証画像です。(3.1MB)ほど。
1920×1438ピクセルのフリー画像。
ブログ用に実際の下記画像は圧縮していますけどね。

フリー画像を脳みそを全く使わずに選びました。写真に意図はありません。

では検証画像行ってみよう!

圧縮率:100(2.1MB)

ほぼ圧縮前と変わらない・・・

圧縮していないけど、3MB→2.1MBにはなるのね・・。
こちらに関しては、デフォルトの圧縮機能が機能したのか?

圧縮率:80(334KB)

いいぞ・・・。とてもいい感じぞ・・・

80にしただけで、圧縮の恩恵をはっきりと感じられるような数字(334KB)になってきました。
実用レベルですね。

圧縮率:50(186KB)

webで使用するなら問題ない程度で、容量もgood

圧縮率50で、元画像の1/15程度まで圧縮できました!
しかも、画像の品質もいい感じです!
まさに、webなら許されるラインといった感じです。
さ、どんどんいきましょう〜!

圧縮率:30(134KB)

流石に目視で荒さがわかるように・・。

影面が荒れが目立つ結果に。
よほど容量を削りたい時でないと、実用には至らないレベルか・・・。

圧縮率:10(72KB)

なんかもう、期限切れのサムネみたいやな・・・

容量はもちろん下がっているけれども、もう見たくないぐらいには荒れていますね。笑

結果、50〜70程度の圧縮率が正義

基本は画像一枚300KB以内に抑えたいところ。
圧縮率が50〜70程度で実装が望ましいと、筆者は判断しました。

皆さんも使ってみてくださいね。

Related ariticle

関連記事

TOP