'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 также может быть полезно.