ЯзыкиPHP

PNG и альфаканал

Если при работе с PNG теряется прозрачный фон, становится черным, необходимо включить альфа канал. Делается это вот так:

if (function_exists('imagealphablending')) {
    // Отключаем режим сопряжения цветов
    imagealphablending($newImage, false);
    // Включаем сохранение альфа канала
    imagesavealpha($newImage, true);
}

Полный код выходит таким:

// Создаем полноцветное изображение
$newImage =imagecreatetruecolor($newWidth, $newHeight);
 
if (function_exists('imagealphablending')) {
    // Отключаем режим сопряжения цветов
    imagealphablending($newImage, false);

    // Включаем сохранение альфа канала
    imagesavealpha($newImage, true);
}
 
// Ресайз
imagecopyresampled($newImage, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $oldWidth, $oldHeight);
 
// Сохранение
imagepng($newImage, $newImagePath);
Loading...