【问题标题】:Iterate through a folder and convert png to jpg遍历文件夹并将png转换为jpg
【发布时间】:2019-10-27 02:35:51
【问题描述】:

我有一个包含不同文件类型(jpg + png)图像的大文件夹。我想遍历文件夹并将任何 png 转换为 jpeg。因此,例如 image323.png 将被转换为 image323.jpg。

我还希望调整它们的大小,使它们的大小都相同,而不会丢失它们的比例/比例。

我知道我需要遍历它们并可能使用条件(如果文件以 png 结尾,则更改为 jpg),这将涉及使用 PIl,但不知道如何将它们放在一起。

【问题讨论】:

  • 请注意,stackoverflow 不是代码编写服务。为避免您的帖子因偏离主题而被关闭,您需要提供代码说明您尝试过的内容以及遇到的具体问题。
  • 但为了帮助您入门,请查看 for every file in a directoryimage conversion。祝你好运:)
  • 谢谢亚历克斯,我太懒了。我会看看你的链接,然后回来提供一些更有建设性的东西。道歉和感谢。
  • 您使用什么操作系统?如果您已经拥有image123.jpg,但您发现转换后会发生冲突的image123.png,是否有可能发生冲突?
  • 嘿再次@MarkSetchell 我使用的是mac,但如果有什么不同,也可以访问linux。

标签: python-3.x png python-imaging-library jpeg


【解决方案1】:

最简单的方法是使用 ImageMagick,您可以使用 homebrew 在 macOS 上安装它:

brew install imagemagick

先做一个备份,然后你只需要进入包含图像的目录并运行:

magick mogrify -format jpg *.png

如果您希望调整它们的大小以使它们最终都达到 600 像素宽:

magick mogrify -format jpg -resize 600x *.png

如果您希望调整它们的大小以使它们最终都达到 300 像素高:

magick mogrify -format jpg -resize x300 *.png

如果您希望调整它们的大小,使它们最终的宽度不超过 600 像素,高度不超过 300 像素:

magick mogrify -format jpg -resize 600x300 *.png

如果您希望调整它们的大小,以使它们最终都达到 600 像素宽和 300 像素高,即使这意味着会扭曲原始纵横比:

magick mogrify -format jpg -resize 600x300\! *.png

根据您拥有的映像数量、它们的大小以及您的 CPU 和磁盘子系统的速度,您可能会更好地使用 GNU Parallel,您可以以相同的方式安装它:

brew install parallel

将所有PNG文件并行转换为JPEG的命令变为:

parallel --dry-run convert {} -resize 600x {.}.jpg ::: *png

【讨论】:

  • 谢谢马克,格式化似乎工作......只有一个问题,有没有办法删除重复......我可以删除/ tm所有的png,一旦它们被转换为jpg?
  • 您可以使用rm *png删除所有PNG文件
  • 或者你可以用open .打开Finder然后点击List ViewKind然后所有的PNG都会一起列出,因此您可以单击第一个 PNG 文件,然后按住 shift 单击最后一个 PNG 文件,然后按 CMD+DEL 删除选定的文件。
  • 如果您有两张同名的图片,一张是PNG,另一张是JPG,但图片不同,您可能需要小心。 Mogrify 将用新的 PNG 覆盖旧的 JPG。你的图片有可能出现这种情况吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-15
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 2012-01-25
  • 2012-06-01
相关资源
最近更新 更多