2016-07-13 27 views
1

私はこのコードを使って画像の最初のピクセルと最後のピクセルの16進色を取得しました。 最初のピクセルのコードが動作していますが、16進数のコードが表示されます。 は、しかし、最後のピクセルのために、私はエラーしました:ここに私のコードPHPは画像エラーの最後のピクセルで色を取得します

PHP Notice: imagecolorat(): 1,1024 is out of bounds in /var/playground/imghex.php on line 55 

です:

$gradientHeight = getimagesize($res["gradient"]); 
// get Positions 
$im = imagecreatefrompng($res["gradient"]); 
$rgb = imagecolorat($im, 0, 0); 
$r = ($rgb >> 16) & 0xFF; 
$g = ($rgb >> 8) & 0xFF; 
$b = $rgb & 0xFF; 
// store 
$res["Gradient1"] = rgb2hex([$r, $g, $b]); 
// get positions 
print_r($gradientHeight); 
$rgb2 = imagecolorat($im, $gradientHeight[0], $gradientHeight[1]); 
$r2 = ($rgb2 >> 16) & 0xFF; 
$g2 = ($rgb2 >> 8) & 0xFF; 
$b2 = $rgb2 & 0xFF; 
// store 
$res["Gradient2"] = rgb2hex([$r2, $g2, $b2]); 
// print 
print_r($res); 

間違っているのですか?私はあなたが0ベースのインデックスにサイズを使用しているので、あなたはその通知を参照して、エラー

+0

@FirstOneで

$rgb2 = imagecolorat($im, $gradientHeight[0], $gradientHeight[1]); 

を交換してください($イム、$ gradientHeight [0] - 1、$ gradientHeight [1]); '? 'PHP Notice:imagecolorat():0,1024が範囲外です ' –

+0

解決済み、ありがとうございます':) '私はあなたをアップアップし、あなたの答えを有効として選択するように答えてください –

答えて

1

が表示されません。 1024のサイズの場合、位置は01023になります。

こうすれば、1を引く必要があります。あなたがその `$ RGB2 = imagecolorat意味ですか

$rgb2 = imagecolorat($im, $gradientHeight[0] - 1, $gradientHeight[1] - 1); 
関連する問題