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