2016-07-13 2 views
1

J'ai créé ce code pour obtenir les couleurs hexadécimales du premier pixel et du dernier pixel d'une image. Le code pour le premier pixel fonctionne, je reçois le code HEX. Mais pour le dernier pixel, j'ai une erreur:PHP obtient la couleur au dernier pixel de l'erreur d'image

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

Voici mon code:

$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); 

Quel est le problème? Je ne vois pas d'erreur

+0

@FirstOne voulez-vous dire que '$ RGB2 = imagecolorat ($ im, gradientHeight $ [0] - 1, gradientHeight $ [1]); '? parce que 'PHP Remarque: imagecolorat(): 0,1024 est hors limites' –

+0

Résolu, merci':) 'S'il vous plaît faire une réponse afin que je puisse vous mettre en colère et choisir votre réponse comme valide –

Répondre

1

Vous voyez cet avis parce que vous utilisez la taille sur un indice basé sur 0 . Si vous avez la taille de 1024, vous aurez des positions de 0 à 1023. De cette façon, vous devrez soustraire 1 de cela. Remplacer

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

avec

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