2017-06-14 5 views
0

私は、PHPで与えられた画像の正確な "グレイレベル"を取得します。私はいつも[0, 0, 0]imagecolorsforindexを使ってRGB配列として得る理由を理解できません。これは私のコードである:PHP:ピクセルのグレーレベルを取得する(画像)

// load 
$img = imagecreatefromjpeg("images/white.jpeg"); 

// to grayscale 
imagefilter($img, IMG_FILTER_GRAYSCALE); 

// just 1 pixel that describe the whole image 
$grayLevel = resize_image($img, 1, 1); 
$gray = imagecolorat($grayLevel, 1, 1); 
$readble = imagecolorsforindex($grayLevel, $gray); 

print_r($readble); 

Iが最初に私の画像をロードする(これは完全に白画像なので、すべての画素があるべきである[255、255、255] thisに従って)、次いで、グレースケールでそれを変換します。私は画像全体を記述する1つのピクセルだけに画像のサイズを変更し、RGB配列を取得します。配列は[0, 0, 0]です。

イメージがグレースケールで色付きでいつも[0, 0, 0]になる理由を理解できません。それは1ピクセルのテクニックが間違っていますか?

感謝

PS:https://pastebin.com/HNDzKq5E

答えて

1

画像の最初のピクセルが(0、0)、ないに存在する(1:resize_image作品は、私はとにかく、これはコードがあり、それをテストしてみました、1)。あなたは正しいです

$gray = imagecolorat($grayLevel, 0, 0);

+0

$gray = imagecolorat($grayLevel, 1, 1);

を変更してみてください!私は1,1とのサイズ変更の呼び出しで混乱しました。 :) – xdola

関連する問題