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
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
У вас PNG с индексированными цветами (палитрой). Поэтому функция imagecolorat возвращает не значение цвета, а его индекс в палитре. Первой точкой с ненулевым индексом является непрозрачная точка по координатам (0, 5).
Если взять, например, точку (0, 0), у которой индекс равен 0, то получим [red: 0, green: 0, blue: 0, alpha: 127]. Такое значение alpha соответствует полной прозрачности точки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽