PHPのimageistruecolor()関数で画像がトゥルーカラー画像かどうかを判定する方法
imageistruecolor() は、PHPに標準で組み込まれている関数の一つで、指定された画像がトゥルーカラー画像であるかどうかを判定するために使用されます。トゥルーカラー画像とは、各ピクセルがRGB(赤・緑・青)のカラー値によって表現される画像のことです。
構文
bool imageistruecolor(resource $image)
パラメータ
imageistruecolor() 関数は、1つのパラメータ $image を受け取ります。このパラメータには、判定対象となる画像リソースを渡します。
戻り値
imageistruecolor() は、指定された画像がトゥルーカラー画像であれば true を返し、そうでなければ false を返します。
補足:トゥルーカラー画像とは
PHPのGDライブラリでは、imagecreatetruecolor() 関数などで作成される画像がトゥルーカラー画像に該当します。一方、imagecreate() で作成される画像はパレット(インデックスカラー)形式となるため、トゥルーカラーとはみなされません。画像処理を行う前にこの関数で判別しておくと、意図しない色の劣化を防ぐことができます。
例1:トゥルーカラー画像を判定する
<?php
// imagecreatefrompng()関数を使ってPNG画像から画像インスタンスを作成
$img = imagecreatefrompng('C:\xampp\htdocs\Images\img44.png');
// 画像がトゥルーカラーかどうかを判定
$istruecolor = imageistruecolor($img);
// 結果を出力
if($istruecolor) {
echo "指定された入力画像はトゥルーカラーです";
}
?>出力結果
// 入力:RGB画像

// 実行結果
指定された入力画像はトゥルーカラーです。
例2:グレー画像(非トゥルーカラー)を判定する
<?php
// imagecreatefrompng()関数を使ってグレー画像から画像インスタンスを作成
$img = imagecreatefrompng('C:\xampp\htdocs\Gray.png');
// 画像がトゥルーカラーかどうかを判定
$istruecolor = imageistruecolor($img);
// 結果を出力
if(!$istruecolor) {
echo "指定された入力画像はトゥルーカラーではありません";
}
?>出力結果
// 入力:グレースケール画像

// 実行結果
指定された入力画像はトゥルーカラーではありません。
まとめ
imageistruecolor() 関数を使えば、画像がトゥルーカラー形式かどうかを簡単に判別できます。パレット画像を扱う場合は必要に応じて imagetruecolortopalette() や imagepalettetotruecolor() などの関数で変換することも可能なので、画像加工の前処理として活用すると良いでしょう。
-
PHPのimagecreatefrompng()関数でPNGファイルやURLから新しい画像を作成する方法
PHPのimagecreatefrompng()は、標準で用意されている組み込み関数のひとつで、PNGファイルまたはURLから新しい画像を作成します。指定されたファイル名から取得した画像を表す「画像リソース識別子」を返します。なお、この関数を利用するには、PHP環境にGDライブラリが組み込まれている必要があります。構文resource imagecreatefrompng(string $filename)パラメータimagecreatefrompng()が受け取るパラメータは$filenameのひとつだけです。この引数には、読み込みたいPNG画像のファイル名、または画像へのパス(URL)を指
-
PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法
imagecreatefromjpeg()は、PHPに組み込まれている関数の一つで、JPEGファイルから新しい画像を生成するために使用されます。指定したファイル名から取得した画像を表す画像リソース識別子(イメージID)を返します。この関数は、GDライブラリが有効になっている環境で動作し、JPEG画像の読み込み、編集、再保存など、さまざまな画像処理の起点としてよく利用されます。構文resource imagecreatefromjpeg(string $filename)パラメータimagecreatefromjpeg()が受け取るパラメータは$filenameの1つだけです。ここには、読み込む