我们最近决定重新设计使用 150x150 缩略图的旧应用。新缩略图的尺寸为 250x250。
现在我要做的是一个一次性的过程,用 250 个拇指替换重新设计之前创建的所有旧的 150 个拇指。
用于创建新缩略图的函数是 php 的imagecopyresampled
。我想找到可以给我类似/相同结果的东西。
imagecopyresampled() 将一幅图像的矩形部分复制到另一幅图像,平滑地插入像素值,以便在减小图像尺寸的同时仍能保持较高的清晰度。
此外,这项工作本身有点复杂,因为在迭代文件时必须排除一些文件夹/文件。
结构:
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)
基本上,我们处理的唯一文件是属性文件夹中的原始大小的图像(没有 _thumb 的图像)。旧的 150px 缩略图将被删除和/或替换为新的 250px 缩略图。
答案1
正如 FvD 所说,ImageMagick 非常适合调整图像大小。
为了找到所有相关文件并处理convert
它们,我建议安装查找工具甚至更好管理系统,因为后者不仅包括 findutils,还包括许多其他好东西(比如适当的 shell)。
如果您安装了 Python,您可以编写一个简单的程序,用于os.walk()
遍历文件系统树并使用subprocess.call()
该convert
文件。
部分示例;
import os
import subprocess
for root, dirs, files in os.walk('company 3\company 3 property'):
images = [os.path.join(root, f) for f in files if f.endswith('.jpg') and not '_thumb' in f]
for f in images:
outbase = f[:-4] # simply remove '.jpg'
out = outbase += '_thumb.jpg'
args = ['convert', f, '-scale', '250x250', out]
subprocess.call(args)
编辑:如果您有不想访问的目录,只需将其从字典中删除即可dirs
。请参阅文档os.walk()
。