如何将文件夹中的所有图片按相同宽度进行缩放?

我想要将给定文件夹中的所有图片按相同的宽度进行缩放(但高度适当进行比例缩放)。我该如何使用基于图形用户界面(GUI)或命令行工具来实现这个目标?

如果可以的话,是否可以根据初始宽度限制哪些图片进行缩放(也就是只对宽度大于 x 和/或宽度小于 y 的图片进行缩放)?


avconv可以通过命令行界面完成这个任务 - 请参考:https://libav.org/avconv.html#scale-1 - Elder Geek
7个回答

这个非常容易用imagemagick来完成。你应该能够在软件中心安装它。我建议用它来批量处理图片。
批量调整大小非常简单(我在Ubuntu 11.10上测试过)。使用以下命令将每个.jpg文件调整为200像素宽度,保持纵横比:
$ convert '*.jpg[200x]' resized%03d.png

你可以使用-set选项来保持文件名。例如:
convert "images/*.jpg[250x]" -set filename:base "%[basename]" "images/new_folder/%[filename:base].jpg"

如果你有更多的文件,你应该使用find命令。
find /folder -iname '*.JPG' -exec convert \{} -verbose -set filename:base "%[basename]" -resize 1920x1080\> "/folder/images/%[filename:base].JPG" \;

这只是揭示了imagemagick的一部分功能。调整大小可以无限调整。要进行更高级的调整大小,您需要使用-resize选项。
您可以将调整大小限制为缩小
$ convert '*.jpg[300x>]' thumb-300-%03d.png

扩大

$ convert '*.jpg[300x<]' thumb-300-%03d.png

请查看几何文档以了解更多选项。

1为什么要将JPG转换为PNG? - JohnyTex
5.jpg和.png扩展名只是为了演示不同格式的使用而提供的示例。 - bandi
有关-set选项的更多信息,请访问:https://www.imagemagick.org/script/command-line-options.php;基本上,`-set <property-name> <value>设置一个属性;%<one-character>%[<one-or-more-characters>]`会被Imagemagick扩展为它们的值;用于以编程方式确定输出文件名的属性需要以“filename:”开头,因此我们需要将包含图像路径的“base”属性复制到“filename:<something>”属性中。 - marcotama
其他属性包括wh(宽度和高度),date:createdate:modify - marcotama
1谢谢分享这个技巧,我之前不知道! - marcotama
2未知的图像属性“%[base]”。 - Post Self
你还可以使用mogrify,它是imageMagick的程序,可以在整个文件夹上运行。 - lesolorzanov
有没有一种方法可以批量调整 X11 光标文件的大小? - Aaron Franke
这个使用什么样的缩放/插值方式呢?是最近邻插值吗?线性插值?还是立方插值? - Aaron Franke

对于图形用户界面(GUI),Phatch “一键值千张照片”是最适合这种快速任务的工具。 它已经包含在Ubuntu软件仓库中。
sudo apt-get install phatch
  1. 添加缩放和保存项目
  2. 设置缩放/调整大小选项
  3. 设置保存/输出选项
  4. 运行
  5. 设置输入文件夹
  6. 点击批处理执行

enter image description here enter image description here


2给一个赞,如果能提供一个实际完成问题任务的例子就更好了 :) 不过还是谢谢你的建议,这个工具很不错! - jaywink
2这在我的机器上没用(Ubuntu Mate 16.04)。应用程序卡在启动界面上。 - Gunith D
1@GunithDevasurendra,尝试从命令行运行以检查错误。如果你解决不了,请提出另一个问题并包含该输出。 - user.dz
2很棒的工具,我用了好多年了。不幸的是,它已经停止维护,并且在当前的Ubuntu版本中无法正常工作。希望有人能够分支代码来修复它。 - Diego V
在 Fedora 上,它与上述情况不同,并且没有这样的功能。 - Vlad

试试这个:

sudo apt-get install gimp-plugin-registry

然后,打开Gimp并打开批处理插件,该插件位于“滤镜>批处理>批处理过程”中。
在“输入”选项卡中选择您的图像,并在令人惊讶地命名为“调整大小”的选项卡中定义调整大小操作。
更多信息可以在这里找到。

尝试使用ImageMagick工具中的“mogrify”命令。
  • 给出一个路径来将输出与原始文件分开
  • 给出所需的缩略图宽度或高度,以下是一个宽度示例
  • 这样你就可以保留原始文件名 :-)

示例:

$ mogrify -path small/ -auto-orient -thumbnail 300x *.jpg

2依我之见,这是最好的答案! - Tom
5将文本内容从英语翻译成中文。只返回已翻译的文本部分:$ mogrify -path small/ -resize 300x *.jpg - Yurié
+1 并且您可以调整最长边的大小,无论是用于纵向还是横向旋转的图片:https://stackoverflow.com/a/5694903/227926 - therobyouknow
1+1 我正在处理一个包含超过50,000个文件的目录。这个命令比那些被接受的答案中的命令要好得多。直接调用 convert 会导致错误("缓存已满"或类似的错误),而通过 find 调用它(如接受的答案中所述)则慢了100倍。 - ack_inc

回答并接受(我使用ImageMagick),但为了完整起见...我有一个非技术背景的老板,他想要一个带有基本工具且必须有图形用户界面的简单查看器。我为他选择了gThumb
在缩略图视图中:
- 选择要调整大小的任何图像 - 启动调整大小功能(点击扳手图标 > 调整图像..) - 输入新的尺寸(基于像素或百分比) - 选择输出文件夹,然后开始操作。

对于调整大小来说,直到16.04版本修复之前,它是Phatch的一个不错的替代选择。 - Hastig Zusammenstellen

这是我通过仅缩小较大的图像完成的方法。
find . -iname \*.jpg -exec convert -verbose -quality 80 -resize 1600\> "{}" "FOO_FOLDER/{}" \;

它将适当地缩放高度。

要使用convert命令,您需要通过sudo apt-get install imagemagick安装Imagemagick。

对于Windows,请参见:批处理脚本调整图像大小


对于批量调整图像大小,我查看了许多软件包,最终找到了一个具有可用界面的软件 - converseen。一旦你发现重要的设置在可滚动的左侧窗格中有些隐藏,一切都很好。
不确定这是否符合所有用户的使用情况,但您可能不必再去研究imagemagick或phatch这些奇怪的用户界面了。
奇怪的是,像digikam、f-spot、fotoxx或shotwell这样的照片管理软件似乎没有意识到在上传到像photobucket或(呕吐)flickr这样的在线服务之前需要复制/调整批量图像的需求。这些服务只希望我们按照他们的方式进行操作,所以我不相信它们能够备份原始文件。

Converseen的效果还不错,但你必须将高度设置为零像素“0”,这样才能仅在宽度上进行调整,同时保持纵横比。 - TomoMiha