'imagecolorat' и прозрачность - PullRequest
       20

'imagecolorat' и прозрачность

7 голосов
/ 18 апреля 2011

Как можно получить значение прозрачности пикселя на изображении ?

'imagecolorat' выбирает только индекс цвета пикселя приуказанное место на изображении.С помощью этого индекса я могу получить значения RGB, но не прозрачные.

Надеюсь, вы понимаете, и спасибо заранее.

Ответы [ 3 ]

12 голосов
/ 18 апреля 2011

решение может быть следующим:

$colorIndex = imagecolorat($img, $x, $y);
$colorInfo = imagecolorsforindex($img, $colorIndex);
print_r($colorInfo);

, который напечатает что-то вроде:

Array
(
   [red] => 226
   [green] => 222
   [blue] => 252
   [alpha] => 0
)

где [альфа] - это значение вашей прозрачности ... (от 0 до 127, где 0 - полная непрозрачность, а 127 - полная прозрачность)

Наслаждайтесь!

10 голосов
/ 18 апреля 2011

Насколько я знаю, значение прозрачности возвращает функция imagecolorat. Не могли бы вы попробовать:

$color        = imagecolorat($image, $x, $y);
$transparency = ($color >> 24) & 0x7F;

Прозрачность - это целое число от 0 до 127, поэтому нам нужно замаскировать первые 8 бит 32-битного цветного целого числа.

1 голос
/ 18 апреля 2011

Согласно руководству по PHP, imagecolorat возвращает индекс цвета по заданным координатам X / Y (я предполагаю, что это для GIF и / или PNG-8).

Если вы знаете индекс, то проблема заключается в определении того, какой индекс в файле является прозрачным.

imagecolortransparent может стоить посмотреть, imagecolorsforindex также может быть полезным.

...