2016-12-11 3 views
0

Я пытаюсь преобразовать частично прозрачный png в jpg в php с gdlib. Я нашел два фрагмента, чтобы помочь мне в этом, но оба метода имеют одинаковую проблему: полупрозрачные цвета темнее и не выглядят правильно. Вот увеличенный образец из фотошопа: покинул PNG (с белым в фоновом режиме, а не прозрачный), право преобразованного PNG в JPG с обоих фрагментами, которые я использовал:ошибка цвета при преобразовании прозрачного png в jpg в php с glib

difference png (left) to jpg (right)

Здесь оригинальный Png-файл: golf.png

Любая помощь была бы действительно оценена!

$input_file = "card/golf.png"; 
$output_file1 = "card/golf1.jpg"; 
$output_file2 = "card/golf2.jpg"; 

$image = imagecreatefrompng($input_file); 

$bg = imagecreatetruecolor(imagesx($image), imagesy($image)); 
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); 
imagealphablending($bg, TRUE); 
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); 
imagejpeg($bg, $output_file1, 100); 
imagedestroy($bg); 
imagedestroy($image); 

list($width, $height) = getimagesize($input_file); 
$image = imagecreatefrompng($input_file); 
$output = imagecreatetruecolor($width, $height); 
$white = imagecolorallocate($output, 255, 255, 255); 
imagefilledrectangle($output, 0, 0, $width, $height, $white); 
imagecopy($output, $image, 0, 0, 0, 0, $width, $height); 
imagejpeg($output, $output_file2, 100); 
imagedestroy($output); 

ответ

0

Вы страдаете от квантования. JPEG вообще не обрабатывает этот тип изображения. Если вы хотите уменьшить изменения цвета, вам необходимо настроить свои таблицы квантования. Если вы используете все 1s для таблиц квантования, вы не получите изменения цвета.

+0

Большое спасибо за ваш ответ. Вопрос: Как я могу влиять на таблицу квантования в php? Никогда не слышал о них, но я готов сделать все, чтобы решить эту проблему ... – Martin

+0

Есть ли какая-то «качественная» настройка? – user3344003

+0

Да, если вы посмотрите во второй строке (imagejpeg), последний параметр равен 100, что означает наилучшее качество. – Martin

Смежные вопросы