使用PHP和ImageMagick调整大容量图像大小

使用PHP和ImageMagick调整大容量图像大小,php,batch-file,imagemagick,Php,Batch File,Imagemagick,在我网站的早期,我允许人们上传他们想要的任何大小的图片。我现在有了客户端和服务器端配置,将新映像的最大值限制为2000px,同时保持原始区域的比率 因此,从旧的配置中,我有一堆目录,其中包含需要缩小的大型图像,我希望在服务器端成批执行此操作(由于客户端带宽限制),在我的一生中,我无法完成此操作。我意识到这会导致服务器端CPU过高,所以我会在几天内分组进行 由于主机RAM的限制,我无法使用GD进行缩放,因此我使用ImageMagick 我将在一批中完成的一个组示例如下: /Images/01/10

在我网站的早期,我允许人们上传他们想要的任何大小的图片。我现在有了客户端和服务器端配置,将新映像的最大值限制为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

所以我想要的东西可以:

  • 当找到一个JPG时,递归地遍历所有目录和子目录以查找JPG-
    • 计算流动比率
    • 将origional文件重命名为origional.jpg.old
    • 在保持纵横比的同时,将文件的高度/宽度调整为最大2000px
    • 使用origional.jpg文件名将文件写入磁盘
    • 检查新的origional.jpg文件是否有效
      • 如果是快乐的文件,请删除origional.jpg.old
  • 然后处理下一个文件/文件夹
我被困住了,需要任何帮助

谢谢 格雷格

递归地遍历所有目录和子目录,在找到JPG时查找JPG

结合使用
RecursiveDirectoryIterator
RecursiveIteratoryIterator
,可能与
Regexterator
一起使用。在这个网站上有几个例子

计算流动比率

不必要

将origional文件重命名为origional.jpg.old

在保持纵横比的同时,将文件的高度/宽度调整为最大2000px

请参见
Imagick::resizeImage
Imagick::scaleImage

使用origional.jpg文件名将文件写入磁盘

Imagick::writeImage

检查新的origional.jpg文件是否有效

不必要

如果是快乐的文件,请删除origional.jpg.old

递归地遍历所有目录和子目录,在找到JPG时查找JPG

结合使用
RecursiveDirectoryIterator
RecursiveIteratoryIterator
,可能与
Regexterator
一起使用。在这个网站上有几个例子

计算流动比率

不必要

将origional文件重命名为origional.jpg.old

在保持纵横比的同时,将文件的高度/宽度调整为最大2000px

请参见
Imagick::resizeImage
Imagick::scaleImage

使用origional.jpg文件名将文件写入磁盘

Imagick::writeImage

检查新的origional.jpg文件是否有效

不必要

如果是快乐的文件,请删除origional.jpg.old


请参阅。

顺便说一句,如果有人知道如何批量使用cpanel图像缩放器,我也可以使用它。我在这里还是新手,请原谅我的评论是没有根据的,但这看起来非常像是让别人为你做工作。你到底坚持什么?你给了我们足够的规格来编写这个程序,但不知道你实际做了什么,或者在实现上遇到了问题。顺便说一下,我也可以使用cpanel图像缩放器,如果有人知道如何批量使用的话?我在这里还是新手,请原谅我的评论是没有根据的,但这看起来很像是让别人为你工作。你到底坚持什么?你已经给了我们足够的规格来编写程序,但不知道你实际做了什么或在实现方面遇到了问题。谢谢你,应该给我我需要的,谢谢你的帮助。谢谢你,应该给我我需要的,谢谢你的帮助。