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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽