【Webp】PHP7.3 jpg,pngからWebP画像に変換して表示する

前回の記事でPHPの準備〜gd確認までを行ったので
今回は実際にphp-gdを使ってjpgまたはpngからWebP画像に変換して
画面に表示してみます

前回の記事はこちら

使う画像

変換前で JPG形式 566KBです

コードと画像ファイルを準備

画面はPHPのビルトインサーバーで確認するとして
適当なディレクトリを作成し index.phpを用意します
中身はこんな感じ

<?php

// jpg、webpそれぞれのパスを定義
$jpgFilePath = './images/sample.jpg';
$webpFilePath = './images/sample.webp';

// jpgファイルを読み込む
$jpg = imagecreatefromjpeg($jpgFilePath);

// webp画像に変換して保存
$webp = imagewebp($jpg, $webpFilePath);

// 読み込んだ画像をメモリから開放しておく
imagedestroy($jpg);
?>

<html>
<head>
    <title>webp test</title>
</head>
<body>
    <img src="<?php echo $webpFilePath ?>" />
</body>
</html>

上述の使う画像を images/sample.jpgとして置きました
ファイルの階層構造はこんな感じです

webpのみを使って表示するものとしたコードにしています

ではビルトインサーバを立ち上げて確認してみます
作成したディレクトリに移動して以下コマンドを実行

php -S localhost:8000

http://localhost:8000にアクセスしてみます

画像が表示されました!
といってもこれがwebpなのか、容量がどれくらいになっているのか
確認していないので確認してみます

WebP画像を確認

html内の要素でも、実際にフォルダをみても
確かにwebpファイルが作成できていました

ではもともとのjpgと比較した容量はどうなっているのか

JPG画像: 566 KB
WebP画像: 261 KB

元々の画像に比べて 46%のサイズになっており、54%の容量の圧縮に成功しています!

さらに並べて表示してみましたが、元のjpg画像と比べてもまったく遜色ありません

まとめ

PHPでWebP画像に変換して表示してみました
画像サイズが半分以下になっているにもかかわらず見た目にはまったく
劣化がないので、WebPが普及しだそうとしている今、WebP対応をしておいて
損はないと思います

いまいまは旧バージョンのサポートも考えるとWebP画像だけで運用する
ということはなく、jpgなどの画像との併用で利用することになると思いますが
出来るところから対応していくだけでも良さそうです