PHPでjpg / png画像をWebP画像に変換し保存する方法
2022/05/31
PHPでjpg / png画像を圧縮したかった。ただjpg / pngのままだとそこまで圧縮できず、最近だとWebPというファイル形式が圧縮率が高いらしい。なのでjpg / png画像をWebP画像に変換し、保存したかった。以下に対応方法をメモ。
WebP画像とは
Google公式の画像形式で圧縮率が高い。読み方は「ウェブピー」ではなく「ウェッピー」とのこと。発表されたのは2010年と結構古いが当時は対応ブラウザが限られていた。最近では主要ブラウザで対応している。
GDライブラリが必要
変換する際にPHPのGDライブラリが必要。テスト環境がPHP7.4だったので以下でインストールした。
yum install --enablerepo=remi-php74 php-gd
ソースコード
$file = './001.jpg'; changeWebP($file); function changeWebP( $file ){ $path_parts = pathinfo($file); $ext = $path_parts['extension']; if( $ext == 'jpg' ){ $old_img = imagecreatefromjpeg($file); }else if( $ext == 'png' ){ $old_img = imagecreatefrompng($file); }else{ return false; } imagewebp($old_img, $path_parts['filename'] . '.webp'); }
imagewebp関数の第3引数で変換時のクオリティ(画像の綺麗さ)を0~100までの半角数値で指定できる。指定しない場合は100となる。
圧縮具合はどうか?
542KBのjpg画像をクオリティ100で変換した場合は401KBに、クオリティ50で変換した場合は246KBに圧縮された。
imagewebp関数リファレンス
https://www.php.net/manual/ja/function.imagewebp.php
所感
実際はファイルアップロード→WebPに変換して保存という形になる思われるので、ソースコードはちょっと改変が必要そう。
関連記事
-
-
phpでhtmlをpdf化。あと無理矢理画像をpdf化
画像をphpでpdf化したかった。 検索してみるもサーバー側の設定を必要とするも ...
-
-
PHPのswitch文で比較演算子の使用
switch文は指定の変数が、特定の値もしくは文字列 だった場合のみに使うような ...
-
-
PHP側での画像最大アップロードサイズの確認
画像がアップロードできず、恐らくサイズ指定にひっかかっているので 最大サイズを調 ...
-
-
他サーバーにある画像をPHPで取得して保存する方法
他サーバーにある画像をURLで指定して、PHPで取得して保存する方法のメモ。 フ ...
-
-
setcookieで「Cannot modify」エラー
PHPでsetcookieを使うと「Warning: Cannot modify ...
-
-
imgタグで作成したグラフをjQueryでリアルタイムに動かす
このグラフをリアルタイムプレビューさせる。 ■サンプル http://sampl ...
-
-
Ajaxでデータを受信した際にリファラのチェックをしたい
Ajaxでデータを受信し、MySQLにINSERTするプログラムがあった。そこま ...
-
-
PHPで土日祝日及び営業時間を考慮した上で翌○営業日を計算する方法
PHPで翌○営業日を計算したい。例えば本日が2021/04/15で翌5営業日を計 ...
-
-
PHPで指定日から曜日を割り出す
曜日ってどうやって割り出すの? となったのでメモ。 ■リファレンス http:/ ...
-
-
javascriptでHTML内に関数を書きたい場合
ダイアログ確認したいだけでわざわざfunctionを 書くのもアレだという時に使 ...