2010-07-05 122 views
0

在我网站的早期阶段,我允许用户上传他们想要的任意大小的图像。我现在有客户端和服务器端配置,以将新图像限制为最大2000px,同时保持原始比例。使用PHP和ImageMagick调整大小图像大小

所以从旧的配置我有一大堆图像的目录,我需要缩小,我想在服务器端批量(由于客户端的带宽限制),以及对于生活我无法解决问题。我意识到它会导致服务器端高CPU,所以我会在几天内分组。

由于主机RAM限制,我不能使用GD进行缩放,所以我有ImageMagick对我有用。

我将在1个批次做的基团的实例如下所示:
/图像/ 01/101/abc.jpg的
/图像/ 01/101/random.jpg
/图像/ 01/101/randomfile.jpg
/图像/ 01/184/random.jpg
/图像/ 01/184/photo.jpg
/图像/ 03/372/randomnumber.jpg
/图像/ 03/372/randomanything.jpg

所以我追求的东西它可以:

  • Recursivly经过的所有目录和子目录寻找JPG文件,当它发现一个 -
    • 制定出流动比率
    • 重命名原始文件origional.jpg.old
    • 调整该文件以在高度/宽度2000像素一个最大值,同时使用origional.jpg文件名
    • 检查日mainting宽高比
    • 写入文件保存到磁盘在新的origional.jpg是一个有效的开心文件
      • ,如果它的一个快乐的文件删除origional.jpg.old
  • 然后处理下一个文件/文件夹。

我被卡住了,并且会喜欢任何帮助。

感谢 格雷格

+0

顺便说一下,我还可以使用cpanel Image Scaler,如果有人知道如何在批处理中使用它? – gggggggg 2010-07-05 04:00:26

+0

我在这里还是个新人,所以如果这个评论是毫无根据的,请原谅我,但这看起来很像是要求人们为你做你的工作。你究竟在干什么?你已经给了我们足够的规格来编写程序,但不知道你实际做了什么或者遇到了什么问题。 – Fosco 2010-07-05 04:05:59

回答

2

递归遍历所有的目录和寻找JPG格式子目录,当它与RegexIterator找到一个

使用RecursiveDirectoryIteratorRecursiveIteratorIterator组合,可能在一起。这个网站有几个例子。

工作出电流比

不必要的。

重命名原始文件origional.jpg.old

rename

调整文件的2000像素在高度/宽度一个最大,而mainting长宽比

Imagick::resizeImage参见或Imagick::scaleImage。使用origional.jpg文件名

Imagick::writeImage

检查新origional.jpg是一个有效的开心文件

不必要

写文件到磁盘。

,如果它的一个快乐的文件删除origional.jpg.old

unlink

+0

谢谢你,应该给我我需要的东西,谢谢你的帮助。 – gggggggg 2010-07-05 04:23:34