PHP スニペット 作成日: 2020/07/10 (更新日: 2023/01/08) PHP GD のスニペット集 目次 注意 スニペット 画像リソースの生成 画像の読み込み 色リソースの生成 塗りつぶし 画像リソースの保存 Data URL に変換 リサイズ (PNG) このページは、PHP の GD (画像処理) のスニペットなどをまとめる予定のページです。 目次 注意 コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。 一部 GD ではない (画像関連の) スニペットもあります。 スニペット中の $img は画像リソース、$color は色リソースです。 スニペット 画像リソースの生成 $width = 100; $height = 100; $img = imagecreatetruecolor($width, $height); PHP: imagecreatetruecolor - Manual 画像の読み込み PNG $path = 'test.png'; $img = imagecreatefrompng($path); PHP: imagecreatefrompng - Manual JPEG $path = 'test.jpg'; $img = imagecreatefrompng($path); PHP: imagecreatefromjpeg - Manual GIF, JPEG, PNG $path = 'test.png'; list($width, $height, $type, $attr) = getimagesize($path); switch ($type) { case IMAGETYPE_GIF: $img = imagecreatefromgif($path); break; case IMAGETYPE_JPEG: $img = imagecreatefromjpeg($path); break; case IMAGETYPE_PNG: $img = imagecreatefrompng($path); break; default: return; } PHP: getimagesize - Manual 色リソースの生成 白 (#ffffff) $color = imagecolorallocate($img, 0xff, 0xff, 0xff); 黒 (#000000) $color = imagecolorallocate($img, 0x00, 0x00, 0x00); 赤 (#ff0000) $color = imagecolorallocate($img, 0xff, 0x00, 0x00); PHP: imagecolorallocate - Manual 塗りつぶし imagefill($img, 0, 0, $color); PHP: imagefill - Manual 画像リソースの保存 PNG $savePath = 'test.png'; imagepng($img, $savePath); imagedestroy($img); PHP: imagepng - Manual JPEG (95 は品質 (0~100)) $savePath = 'test.jpg'; imagejpeg($img, $savePath, 95); imagedestroy($img); PHP: imagejpeg - Manual Data URL に変換 $path = 'test.png'; list($width, $height, $type, $attr) = getimagesize($path); $mime = image_type_to_mime_type($type); $imageData = file_get_contents($path); $dataUrl = 'data:' . $mime . ';base64,' . base64_encode($imageData); リサイズ (PNG) $srcPath = 'test.png'; $destPath = 'resize.png'; $resize = 100; // 幅の最大長 (横幅が長い場合は横幅、縦幅が長い場合は縦幅の長さ) list($srcWidth, $srcHeight, $type, $attr) = getimagesize($srcPath); if ($srcWidth >= $srcHeight) { $newWidth = $resize; $newHeight = $newWidth * ($srcHeight / $srcWidth); } else { $newHeight = $resize; $newWidth = $newHeight * ($srcWidth / $srcHeight); } $src = imagecreatefrompng($srcPath); $dest = imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($dest, $src, 0, 0, 0, 0, $newWidth, $newHeight, $srcWidth, $srcHeight); imagepng($dest, $destPath); imagedestroy($img);