четверг, 30 мая 2013 г.

php imagecolorat Всегда возвращает черный цвет

Если imagecolorat возвращает всегда 0, или какие то другие не корректные значения, надо вместо побитового сдвига использовать функцию imagecolorsforindex



Не правильно:

$imgObject = imagecreatefrompng('our.png');
$fillColor = imagecolorat($imgObject, 0, 0);

 $rgba = array(
    ($fillColor >> 16) & 0xFF,
    ($fillColor >> 8) & 0xFF,
     $fillColor & 0xFF,
    ($fillColor >> 24) & 0xFF
);




Правильно:

$imgObject = imagecreatefrompng('our.png');
$fillColor = imagecolorat($imgObject, 0, 0);
$colors = imagecolorsforindex($imgObject, $fillColor);

$rgba  = array(
   $colors['red'],
   $colors['green'],
   $colors['blue'],
    $colors['alpha']
);

Комментариев нет:

Отправить комментарий