I have a lot of JPEG images that I want to convert to PNG images using PHP. The JPEGs are going to be uploaded by client开发者_如何学Cs so I can't trust them to make sure they are in the right format.
I also want to make their white backgrounds transparent.
Does PHP have any functions I can use to achieve this?
After a few days of trying different solutions and doing some more research, this is what I found worked for me.
$image = imagecreatefromjpeg( 'image.jpg' );
imagealphablending($image, true);
$transparentcolour = imagecolorallocate($image, 255,255,255);
imagecolortransparent($image, $transparentcolour)
The imagealphablending($image, true);
is important.
Using imagesavealpha($f, true);
as mentioned in a previous answer definitely doesn't work and seems to actually prevent you from making the background transparent...
To output the transparent image with the correct headers.
<?php
header( 'Content-Type: image/png' );
imagepng( $image, null, 1 );
?>
$f = imagecreatefromjpeg('path.jpg');
$white = imagecolorallocate($f, 255,255,255);
imagecolortransparent($f, $white);
More details here
This worked for me:
$image = imagecreatefromjpeg( "image.jpg" );
imagealphablending($image, true);
imagepng($image, "image.png");
I found this solution at Convert jpg image to gif, png & bmp format using PHP
$imageObject = imagecreatefromjpeg($imageFile);
imagegif($imageObject, $imageFile . '.gif');
imagepng($imageObject, $imageFile . '.png');
imagewbmp($imageObject, $imageFile . '.bmp');
精彩评论