简体   繁体   中英

Force imagejpeg to .png

I have a doubt. Is there a problem if I force imagejpeg to save a .png file? Like in this example:

imagejpeg($img,$_SERVER['DOCUMENT_ROOT']."/test.png",80);

I want to use this method because I can use the $quality filter. In this method I have a saved .png file for about 25kb, but if I use imagepng my image is for about 200kb (I used the $quality level from 0-9 but I didn't saw any changes, only -20 kb). I don't want to make a mistake because my website is generating .png images every second.

Method 2. I tried to compress the .png images with pngquant but I have no idea how to do it when I am using imagepng function. I tried something like this, but It doesn't work if I pass the image to the function.

ob_start();
imagepng($img);
$png = ob_get_clean();
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.png", compress($png);

function compresss($img)
{
    //...
}

In other cases if I have $png = $_FILES['file']['tmp_name'] is working. So is there a way to compress with pngquant, or is there a problem if I force imagejpeg to save a .png file?

You should use imagepng() instead of imagejpeg() to create a png file.

http://php.net/manual/fr/function.imagepng.php

Your forcing just the filename of the created file. The resulting file will be jpg with all its properties. You will not get a compressed png file if you use the imagejpeg() method.

You need to understand the difference of the both formats. While jpg is a compressed format which loses image information when compressing, png is a lossless format. png also has a compression level, but since no image informatio is destroyed, it will be bigger as an jpg file.

If you use imagepng($image, $filename, 9) you get a png file with the best compression.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM