Compress jpeg on server with PHP

2019-01-19 13:54发布

I have a site with about 1500 JPEG images, and I want to compress them all. Going through the directories is not a problem, but I cannot seem to find a function that compresses a JPEG that is already on the server (I don't want to upload a new one), and replaces the old one.

Does PHP have a built in function for this? If not, how do I read the JPEG from the folder into the script?

Thanks.

4条回答
Animai°情兽
2楼-- · 2019-01-19 14:21

I prefer using the IMagick extension for working with images. GD uses too much memory, especially for larger files. Here's a code snippet by Charles Hall in the PHP manual:

$img = new Imagick();
$img->readImage($src);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest); 
$img->clean();
查看更多
Animai°情兽
3楼-- · 2019-01-19 14:34

The solution provided by vlzvl works well. However, using this solution, you can also overwrite an image by changing the order of the code.

    $image = imagecreatefromjpeg("image.jpg");  
    unlink("image.jpg");
   imagejpeg($image,"image.jpg",50);

This allows you to compress a pre-existing image and store it in the same location with the same filename.

查看更多
Emotional °昔
4楼-- · 2019-01-19 14:36

you're not telling if you're using GD, so i assume this.

$img = imagecreatefromjpeg("myimage.jpg");   // load the image-to-be-saved

// 50 is quality; change from 0 (worst quality,smaller file) - 100 (best quality)
imagejpeg($img,"myimage_new.jpg",50);

unlink("myimage.jpg");   // remove the old image
查看更多
相关推荐>>
5楼-- · 2019-01-19 14:37

You will need to use the php gd library for that... Most servers have it installed by default. There are a lot of examples out there if you search for 'resize image php gd'.

For instance have a look at this page http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html

查看更多
登录 后发表回答