PHP Conference Fukuoka 2025

imagewebp

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

imagewebpWebP 画像をブラウザあるいはファイルに出力する

説明

imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool

指定した image を、WebP 形式で出力あるいは保存します。

パラメータ

image

imagecreatetruecolor()のような画像作成関数が返す GdImage オブジェクト。

file

ファイル保存先のパスあるいはオープン中のリソース (この関数が値を戻した後で自動的にクローズされます)。省略したり null を設定したりした場合は、画像ストリームを直接出力します。

quality

quality には、0 (品質は最低で、 ファイルサイズが小さくなる) から 100 (品質が最高で、ファイルサイズは大きくなる) までの値を指定します。 -1 を指定すると、 デフォルト値 80 を使います。

戻り値

成功した場合に true を、失敗した場合に false を返します。

警告

しかしながら、libgd がイメージの出力に失敗した場合、この関数は true を返します。

エラー / 例外

quality が不正の場合、 ValueError をスローします。

変更履歴

バージョン 説明
8.4.0 quality が不正の場合、 ValueError をスローするようになりました。
8.0.0 image は、 GdImage クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な gd resource が期待されていました。

例1 WebP ファイルの保存

<?php
// 空の画像を作成し、テキストを追加します
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);

imagestring($im, 1, 5, 5, 'WebP with PHP', $text_color);

// 画像を保存します
imagewebp($im, 'php.webp');
?>

add a note

User Contributed Notes 5 notes

up
31
vinicius dot sizilio at gmail dot com
5 years ago
To convert a PNG image to Webp, we can do this:<?php// Image$dir = 'img/countries/';$name = 'brazil.png';$newName = 'brazil.webp';// Create and save$img = imagecreatefrompng($dir . $name);imagepalettetotruecolor($img);imagealphablending($img, true);imagesavealpha($img, true);imagewebp($img, $dir . $newName, 100);imagedestroy($img);?>
up
32
Khalyomede
6 years ago
As of today (end of january 2019), WebP is now supported across all the major browsers (Edge, Chrome, Firefox, Opera).
up
22
JSix
3 years ago
Function to save any image to Webppublic static function webpImage($source, $quality = 100, $removeOld = false)    {        $dir = pathinfo($source, PATHINFO_DIRNAME);        $name = pathinfo($source, PATHINFO_FILENAME);        $destination = $dir . DIRECTORY_SEPARATOR . $name . '.webp';        $info = getimagesize($source);        $isAlpha = false;        if ($info['mime'] == 'image/jpeg')            $image = imagecreatefromjpeg($source);        elseif ($isAlpha = $info['mime'] == 'image/gif') {            $image = imagecreatefromgif($source);        } elseif ($isAlpha = $info['mime'] == 'image/png') {            $image = imagecreatefrompng($source);        } else {            return $source;        }        if ($isAlpha) {            imagepalettetotruecolor($image);            imagealphablending($image, true);            imagesavealpha($image, true);        }        imagewebp($image, $destination, $quality);        if ($removeOld)            unlink($source);        return $destination;    }
up
6
day4gerard
5 years ago
WebP is not yet supported by Safari, although they are experimenting with it.Check out https://caniuse.com/#search=webp for the latest support information.
up
1
Sam
4 years ago
Safari on mac now has limited support (limited to Safari 14+ on Big Sur or later)Safari on iOS 14.4 and higher has full support
To Top