调整大部分图像(php或任何其他语言)的大小

时间:2013-08-25 09:54:47

标签: php

我们最近决定重新设计使用150x150缩略图的旧应用。新拇指的大小为250x250。现在我必须更改之前条目创建的所有拇指。

用于创建新缩略图的功能是php的imagecopyresampled

您是否建议使用php或任何其他更本地的os语言/软件调整所有旧缩略图的大小,以便在本地更快地调整它们的大小? (软件必须支持copyresampled函数或类似结果的东西。)

此外,作业本身有点复杂,因为在通过文件进行迭代时必须排除一些文件夹。

level 1: company folder
level 2: company property folder, company products folder
level 3: there are images that have to be resized inside company property folder.

company 1
company 2
company 3
----company 3 property
--------image1.jpg (original size)
--------image1_thumb.jpg (old 150 thumb)
--------image2.jpg
--------image2_thumb.jpg
----company 3 products (folder also includes images but they should not be resized)

我还可以使用另一种方式在属性database中查找图像名称/路径,但这可能比仅通过迭代文件夹慢。你觉得怎么样?

1 个答案:

答案 0 :(得分:1)

看起来像一次性工作?如果是这样,您可以使用ImageMagickconvert实用程序在一次点击时调整所有拇指图像的大小:

$ convert -resize '250x250' image1.jpg image1_thumb.jpg

您可以使用适当的模式循环拍摄图像:

$ for i in $(find . -regex '.*image[0-9]+\.jpg'); do echo $i ; done
./image2.jpg
./image1.jpg
./image4.jpg
./image3.jpg
$

并使用上一个命令转换它们:

for i in $(find . -regex '.*image[0-9]+\.jpg'); do
     convert -resize '250x250' $i $(echo $i | sed 's/.jpg/_thumb.jpg/g');
done

预览:

$ ls
image1.jpg  image2.jpg  image3.jpg  image4.jpg
$ for i in $(find . -regex '.*image[0-9]+\.jpg'); do echo $i ; done
./image2.jpg
./image1.jpg
./image4.jpg
./image3.jpg
$ for i in $(find . -regex '.*image[0-9]+\.jpg'); do
>      convert -resize '250x250' $i $(echo $i | sed 's/.jpg/_thumb.jpg/g');
> done
$ ls
image1.jpg  image1_thumb.jpg  image2.jpg  image2_thumb.jpg  image3.jpg  image3_thumb.jpg  image4.jpg  image4_thumb.jpg
$ 

让它运行直到所有图像都被转换。