Script for batch compression of picture file size by php

  • 2021-07-06 10:40:18
  • OfStack

Today, I want to upload a large number of pictures to the forum. Because the pictures are shot by SLR and have a large volume, I wrote a script to compress the pictures in batches.


<?php

if ($handle = opendir('./old')) {

    while (false !== ($file = readdir($handle))) {
        if ($file == '.' || $file == '..') {
            continue;
        }
        write('d:/wamp/www/test/old/'.$file, 'd:/wamp/www/test/new/'.$file);
    }

    closedir($handle);
}


function write($old, $new) {
    $maxsize=1000;
    $image = new Imagick($old);
    if($image->getImageHeight() <= $image->getImageWidth())
    {
        $image->resizeImage($maxsize,0,Imagick::FILTER_LANCZOS,1);
    }
    else
    {
        $image->resizeImage(0,$maxsize,Imagick::FILTER_LANCZOS,1);
    }
    $image->setImageCompression(Imagick::COMPRESSION_JPEG);
    $image->setImageCompressionQuality(90);
    $image->stripImage();
    $image->writeImage($new);
    $image->destroy();
}
?>


Related articles: