a-blog cmsでPNGからJPGに変換する校正オプション

a-blog cmsで構築してお客様に納入したサイトですが、トップページのメインビジュアルエリアや記事のサムネイルにPNG形式で写真のような画像を登録していて、ファイルサイズが合計14,200KBほどになっていました。

急ぎ登録されている画像をPNGからJPGに変換する、下記のような校正オプションを作成しパフォーマンスの改善を行ったところ、3,700KBほどに収まりました。

HTMLソースに校正オプションを追加

<img src="%{ROOT_DIR}{path}[resizeImg(460,300)|png2jpg]" alt="">

/extension/acms/Corrector.php

    /**
     * png2jpg
     * JPGをPNGを置換する
     *
     * @param  string $path  - PNGのパス(/archives/001/201905/9c2c7c442a531f334c0ee6debd5b82ab.png)
     * @return string       - JPGのパス(/archives/001/201905/9c2c7c442a531f334c0ee6debd5b82ab.png.jpg)
     */
    function png2jpg($path)
    {
        // PNGの絶対パスを取得
        $real_path = __DIR__ . '/../../archives/' . $path;
        // PNGファイルであれば実行
        if( strpos($real_path, '.png') )
        {
            // JPGファイルが生成済みでなければ実行
            if( ! file_exists($real_path . '.jpg' ) )
            {
                // PNGに変換
                $image = imagecreatefrompng($real_path);
                $bg = imagecreatetruecolor(imagesx($image), imagesy($image));
                imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
                imagealphablending($bg, TRUE);
                imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
                imagedestroy($image);
                $quality = 90; // 0 = worst / smaller file, 100 = better / bigger file 
                imagejpeg($bg, $real_path . ".jpg", $quality);
                imagedestroy($bg);
            }
            // JPGファイルのパスを返す
            return $path . ".jpg";
        }
        else
        {
            // そのままのパスを返す
            return $path;
        }
    }

関連記事

この記事のハッシュタグに関連する記事が見つかりませんでした。

最新記事

カテゴリー

アーカイブ

ハッシュタグ