Используйте PHP для преобразования JPEG в прозрачный PNG - PullRequest
6 голосов
/ 30 сентября 2011

У меня есть много изображений JPEG, которые я хочу преобразовать в изображения PNG, используя PHP.Файлы JPEG будут загружены клиентами, поэтому я не могу доверять им, чтобы они были в правильном формате.

Я также хочу сделать их белый фон прозрачным.есть какие-нибудь функции, которые я могу использовать для достижения этой цели?

Ответы [ 4 ]

8 голосов
/ 04 октября 2011

После нескольких дней попыток найти разные решения и провести дополнительные исследования, я понял, что это работает для меня.

 $image = imagecreatefromjpeg( 'image.jpg' );
 imagealphablending($image, true);
 $transparentcolour = imagecolorallocate($image, 255,255,255);
 imagecolortransparent($image, $transparentcolour)

Значение imagealphablending($image, true); важно.

Использование imagesavealpha($f, true);, как упомянуто в предыдущем ответе, определенно не работает и, кажется, фактически мешает вам сделать фон прозрачным ...

Чтобы вывести прозрачное изображение с правильными заголовками.

<?php
     header( 'Content-Type: image/png' );
     imagepng( $image, null, 1 );
?>
6 голосов
/ 30 сентября 2011
$f = imagecreatefromjpeg('path.jpg');
$white = imagecolorallocate($f, 255,255,255);
imagecolortransparent($f, $white);

Подробнее здесь

0 голосов
/ 29 марта 2015

Это сработало для меня:

 $image = imagecreatefromjpeg( "image.jpg" );
 imagealphablending($image, true);
 imagepng($image, "image.png");
0 голосов
/ 30 сентября 2011

Я нашел это решение на Преобразование изображения JPG в формат GIF, PNG и BMP с использованием PHP

$imageObject = imagecreatefromjpeg($imageFile);
imagegif($imageObject, $imageFile . '.gif');
imagepng($imageObject, $imageFile . '.png');
imagewbmp($imageObject, $imageFile . '.bmp');
...