调整大部分图像的大小(任何语言或软件)

调整大部分图像的大小(任何语言或软件)

我们最近决定重新设计使用 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()

答案2

你可以用你喜欢的任何方式设置文件夹的遍历。转换最好用图像魔术师它可以很好地从命令行运行,也可以嵌入到其他任何东西中。

你正在寻找的特殊魔法就在下方转变

相关内容