Задать вопрос
Rikisan
@Rikisan
техник-программист

Как получить alpha канал при помощи php GD?

При получении цвета из png картинки с прозрачным фоном не получает альфа канал пикселя

$img_path = $path . 'out_img.png';
$im = imagecreatefrompng($img_path);
$width = ImageSX($im);
$height = ImageSY($im);
$im2 = imagecreatetruecolor($width, $height);
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
$rgb = imagecolorat($im, $x, $y);
if ($rgb != 0) {
$color_rgb = imagecolorsforindex($im, $rgb);
$alpha = $color_rgb['alpha'];
sage($color_rgb);die();
}
}
}

Возвращает:
642a977575f27025312099.png
Исходный PNG
642a974348265869919503.png
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас PNG с индексированными цветами (палитрой). Поэтому функция imagecolorat возвращает не значение цвета, а его индекс в палитре. Первой точкой с ненулевым индексом является непрозрачная точка по координатам (0, 5).
Если взять, например, точку (0, 0), у которой индекс равен 0, то получим [red: 0, green: 0, blue: 0, alpha: 127]. Такое значение alpha соответствует полной прозрачности точки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы