2016-07-13 9 views
1

Я сделал этот код, чтобы получить шестнадцатеричные цвета первого пикселя и последнего пикселя изображения. Код для первого пикселя работает, я получаю код HEX. Но для последнего пикселя, у меня ошибка: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

@FirstOne вы имеете в виду, что '$ RGB2 = imagecolorat ($ им, $ gradientHeight [0] - 1, $ gradientHeight [1]); '? потому что 'PHP Примечание: imagecolorat(): 0,1024 вне границ' –

+0

Решено, спасибо':) 'Пожалуйста, сделайте ответ, чтобы я мог поддержать вас и выбрать ваш ответ как действительный –

ответ

1

Вы видите, что уведомление, потому что вы используете размер на 0 на основе индекса. Если у вас есть размер 1024, у вас будут позиции от 0 до 1023.

Таким образом, вы должны вычесть из него 1. Заменить

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

с

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