Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use PHP to convert PNG to JPG with compression?

Tags:

php

png

jpeg

I have a bunch of high quality PNG files. I want to use PHP to convert them to JPG because of it's smaller file sizes while maintaining quality. I want to display the JPG files on the web.

Does PHP have functions/libraries to do this? Is the quality/compression any good?

like image 390
John Avatar asked Jul 29 '09 17:07

John


2 Answers

Do this to convert safely a PNG to JPG with the transparency in white.

$image = imagecreatefrompng($filePath); $bg = imagecreatetruecolor(imagesx($image), imagesy($image)); imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255)); imagealphablending($bg, TRUE); imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image)); imagedestroy($image); $quality = 50; // 0 = worst / smaller file, 100 = better / bigger file  imagejpeg($bg, $filePath . ".jpg", $quality); imagedestroy($bg); 
like image 58
Daniel De León Avatar answered Sep 16 '22 13:09

Daniel De León


Be careful of what you want to convert. JPG doesn't support alpha-transparency while PNG does. You will lose that information.

To convert, you may use the following function:

// Quality is a number between 0 (best compression) and 100 (best quality) function png2jpg($originalFile, $outputFile, $quality) {     $image = imagecreatefrompng($originalFile);     imagejpeg($image, $outputFile, $quality);     imagedestroy($image); } 

This function uses the imagecreatefrompng() and the imagejpeg() functions from the GD library.

like image 41
Andrew Moore Avatar answered Sep 17 '22 13:09

Andrew Moore