こんにちは、今日はPHPで画像ピクセルのRGB値を取得する方法についてまとめていきます。
確認環境
PHP 7.2.7
画像の読み込み
imagecreate系の関数を使用して画像を読み込みます。
読み込む画像ファイル形式ごとに関数が用意されているため、適当な関数を使用します。
関数 | 説明 |
imagecreatefrombmp | https://www.php.net/manual/ja/function.imagecreatefrombmp.php |
imagecreatefromgd2 | https://www.php.net/manual/ja/function.imagecreatefromgd2.php |
imagecreatefromgd2part | https://www.php.net/manual/ja/function.imagecreatefromgd2part.php |
imagecreatefromgd | https://www.php.net/manual/ja/function.imagecreatefromgd.php |
imagecreatefromgif | https://www.php.net/manual/ja/function.imagecreatefromgif.php |
imagecreatefromjpeg | https://www.php.net/manual/ja/function.imagecreatefromjpeg.php |
imagecreatefrompng | https://www.php.net/manual/ja/function.imagecreatefrompng.php |
imagecreatefromstring | https://www.php.net/manual/ja/function.imagecreatefromstring.php |
imagecreatefromwbmp | https://www.php.net/manual/ja/function.imagecreatefromwbmp.php |
imagecreatefromwebp | https://www.php.net/manual/ja/function.imagecreatefromwebp.php |
imagecreatefromxbm | https://www.php.net/manual/ja/function.imagecreatefromxbm.php |
imagecreatefromxpm | https://www.php.net/manual/ja/function.imagecreatefromxpm.php |
ピクセルカラーの取得
カラーの取得にはimagecolorat関数を使用します。
https://www.php.net/manual/ja/function.imagecolorat.php
第一引数には前の手順にて取得した画像リソースを渡し、第二引数にx座標、第三引数にy座標を渡すとその座標のRGB値が取得できます。
以下の例ではPHPファイルと同階層にあるtest.pngというファイルを読み込み、x座標が10、y座標が20のピクセルのRGB値を取得しています。
$rgbにはRGB値が、$r, $g, $bにはそれぞれR, G, Bの値が格納されます。
<?php
$img = imagecreatefrompng("test.png");
$rgb = imagecolorat($img, 10, 20);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
?>