在我网站的早期,我允许用户上传他们想要的任何尺寸的图片。我现在有客户端和服务器端配置将新图像限制为最大2000px,同时保持原始比率。
所以从旧的配置我有一堆大图像目录,我需要缩小,我想在服务器端批量执行此操作(由于客户端带宽限制),并在生命周期我,我无法解决这个问题。我意识到它会导致服务器端CPU高,所以我会在几天内分组进行。
由于主机RAM限制,我无法使用GD进行缩放,因此我可以使用ImageMagick。
我将在一批中进行的一组示例如下所示:
/ Images / 01/101 / abc.jpg
/ Images / 01/101 / random.jpg
/ Images / 01/101 / randomfile.jpg
/ Images / 01/184 / random.jpg
/ Images / 01/184 / photo.jpg
/ Images / 03/372 / randomnumber.jpg
/ Images / 03/372 / randomanything.jpg
所以我追求的是:
我被困住了,请你帮忙。
由于 格雷格
答案 0 :(得分:2)
当找到一个
时,递归遍历寻找JPG的所有目录和子目录
使用RecursiveDirectoryIterator
和RecursiveIteratorIterator
的组合,可能与RegexIterator
一起使用。这个网站有一些例子。
计算当前比率
不必要的。
将原始文件重命名为origional.jpg.old
请参阅rename
。
将文件的高度/宽度调整为最大2000像素,同时保持纵横比
请参阅Imagick::resizeImage
或Imagick::scaleImage
。
使用origional.jpg文件名
将文件写入磁盘
Imagick::writeImage
检查新的origional.jpg是否是有效的快乐文件
不必要的。
如果它是一个快乐的文件删除origional.jpg.old
请参阅unlink。