0

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

用于创建新缩略图的函数是 php 的imagecopyresampled.

您是否建议使用 php 或任何其他可以在本地更快地调整它们大小的本地操作系统语言/软件来调整所有旧缩略图的大小?(软件必须支持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)

我也可以使用其他方式并在 property 中查找图像名称/路径database,但这可能比仅迭代槽文件夹要慢。你怎么看?

4

1 回答 1

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
$ 

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

于 2013-08-25T10:36:50.447 回答