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

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

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

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

3 ответов


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

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

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


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

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

что напечатает что-то вроде:

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

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

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


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

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

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