У меня есть много изображений 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');