2011年10月21日

imagecolorexact関数と、昨日の続き?


そういえば画像系の関数名って、あんまり省略されてないですね。
打つ文字数は多くなるけど、略されてない方がおぼえやすいです♪


imagecolorexact もまんまですね。
指定した色と一致する色のインデックスを返す関数です。

昨日の、指定した色と近い色のインデックスを返す
imagecolorclosest に似てますね。

早速試してみたのがこちらのコードです↓

<?php
//画像を読み込む
$image = imagecreatefrompng("black.png");
//指定した色のインデックスを検索する
$colors = array();
$colors[0] = imagecolorexact($image, 255, 0, 0);
$colors[1] = imagecolorexact($image, 0, 255, 0);
$colors[2] = imagecolorexact($image, 0, 0, 255);
$colors[3] = imagecolorexact($image, 255, 255, 255);
$colors[4] = imagecolorexact($image, 0, 0, 0);
//インデックスをブラウザに出力する
print_r($colors);
?>

結果はこちら↓

Array ( [0] => 16711680 [1] => 65280 [2] => 255 [3] => 16777215 [4] => 0 )

赤 = 16711680
緑 = 65280
青 = 255
白 = 16777215
黒 = 0

だから、合ってるみたいですね♪

このコードを参考にして、昨日の imagecolorclosest できないかなぁと思って、
試してみました↓

<?php
//画像の読み込み
$image = imagecreatefrompng("black.png");
//指定色に一番近い色のインデックスを検索
$colorIndex = array();
$colorIndex[] = imagecolorclosest($image, 0, 255, 255);
$colorIndex[] = imagecolorclosest($image, 255, 0, 255);
$colorIndex[] = imagecolorclosest($image, 255, 255, 0);
print_r($colorIndex);
?>

結果はこちら↓

Array ( [0] => 65535 [1] => 16711935 [2] => 16776960 )

黄色 = 65535
マゼンタ =16711935
シアン = 16776960

らしいから、imagecolorexact を使ってた場合は合ってますよね。
でも使ったのは imagecolorclosest なんですけど……。

もっと微妙な色ならどうだろ?と思ってトライしたのがこちら↓

<?php
//画像の読み込み
$image = imagecreatefrompng("black.png");
//指定色に一番近い色のインデックスを検索
$colorIndex = array();
$colorIndex[] = imagecolorclosest($image, 0, 254, 254);
$colorIndex[] = imagecolorclosest($image, 254, 0, 254);
$colorIndex[] = imagecolorclosest($image, 254, 254, 0);
print_r($colorIndex);
?>

結果はこうなりました↓

Array ( [0] => 65278 [1] => 16646398 [2] => 16711168 )

検索しても出てこないので、確かめようがありませんでした(^^;)

次に試したのがこちら↓

<?php
//画像の読み込み
$image = imagecreatefrompng("black.png");
//指定色に一番近い色のインデックスを検索
$colorIndex = array();
$colorIndex[] = imagecolorclosest($image, 254, 145, 154);
$colorIndex[] = imagecolorclosest($image, 153, 145, 188);
$colorIndex[] = imagecolorclosest($image, 153, 90, 145);
print_r($colorIndex);
?>

この色の組み合わせはこちらのページを参考にさせていただきました↓

PHP: imagecolorclosest - Manual

結果はこちら↓

Array ( [0] => 16683418 [1] => 10064316 [2] => 10050193 )

これも検索しても出てこなかったから、マイナーな色なのかな……?
であれば、RGB値を取得すればいいんじゃん?と思って試したのがこちら↓

<?php
$image = imagecreatefrompng("black.png");
//一番近い色のインデックスを検索
$colorIndex = imagecolorclosest($image, 254, 145, 154);
//RGB値の取得
$colorArray = imagecolorsforindex($image, $colorIndex);
//RGB値の出力
printf("RGB = (%d, %d, %d)",
$colorArray["red"],
$colorArray["green"],
$colorArray["blue"]);
?>

こうなりました……↓

RGB = (254, 145, 154)

変わってないじゃん……(-_-)
上記のページでは一番近い色が (252, 150, 148) ってなってるのに……。

何か間違ってるのかなぁ……?
それとも私の環境では使えない関数なのかなぁ……?


<ご紹介>----------------------------------------------------------------------------------------

gamification.jpg

ゲーミフィケーション辞典48 19,800円

----------------------------------------------------------------------------------------<ご紹介>



imagecolorexact関数についてはこちらの記事もどうぞ↓
imagecolorexact関数はうまくいきました

関連のある関数はこちらです↓
imagecolorclosest関数が微妙〜
printf関数
imagecreatefrompng関数はもう何度使ったかなぁ



posted by れい at 14:28| Comment(0) | 画像関数 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。