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;
}
}
※この機能を使う場合は、a-blog cmsの実行ファイル(index.php)のパーミッションをグループも読み込み可(644など)としてください。
コメント