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();
}
?>