Ответы пользователя по тегу Программирование
  • Почему при ресайзе png-шок с прозрачным фоном при помощи php фон красится в чёрный?

    misterfil
    @misterfil
    PHP программист(Full Stack)
    Дело в том что imagecreatetruecolor создает изображение с черным фоном. При включенном “режиме сопряжения цветов” прозрачный пиксель, не заменит фон, а будет рассчитан новый цвет в соответствии с новым цветом и цветом фона с учетом альфа канала обоих цветов – в итоге для полностью прозрачного пикселя получаем фоновой цвет – т.е. черный.

    Решение следующие
    После строки:
    $NewCanves              = imagecreatetruecolor($NewWidth, $NewHeight);


    Добавляем это:
    //Отключаем режим сопряжения цветов
    imagealphablending($NewCanves, false);

    //Включаем сохранение альфа канала
    imagesavealpha($NewCanves, true);

    Замените строку
    if(imagejpeg($NewCanves,$DestImage,$Quality)){
    на
    if(imagepng($NewCanves,$DestImage,$Quality)){

    И в строке что ниже, укажите качество 0-9, если максимальное то ставьте $Quality=9
    resizeImage($imagePath,$destPath,$NewImageWidth=230,$NewImageHeight=138,$Quality=100);
    Ответ написан
    2 комментария