Использовать PHP для преобразования JPEG в прозрачный PNG

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

Я также хочу сделать их белые фоны прозрачными.

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

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

$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 ); ?> 
 $f = imagecreatefromjpeg('path.jpg'); $white = imagecolorallocate($f, 255,255,255); imagecolortransparent($f, $white); 

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

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

  $image = imagecreatefromjpeg( "image.jpg" ); imagealphablending($image, true); imagepng($image, "image.png"); 

Я нашел это решение при преобразовании jpg изображения в формат gif, png и bmp с помощью PHP

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