Python 调整目录中的图像大小
我有一个目录的图像,我想调整到大约60%的原始大小满 我该怎么做呢?可以是Python或Perl 干杯 Eef我将Python与PIL(Python图像库)一起使用。当然,有专门的程序来实现这一点 许多人使用PIL来处理这些事情。看看: PIL非常强大,最近我发现了以下配方:Python 调整目录中的图像大小,python,perl,image,resize,image-scaling,Python,Perl,Image,Resize,Image Scaling,我有一个目录的图像,我想调整到大约60%的原始大小满 我该怎么做呢?可以是Python或Perl 干杯 Eef我将Python与PIL(Python图像库)一起使用。当然,有专门的程序来实现这一点 许多人使用PIL来处理这些事情。看看: PIL非常强大,最近我发现了以下配方: 使用,它是一个流行的命令行工具套件的接口,用于完成这类工作。也可用。您需要调整它的大小,还是通过编程方式调整大小? 如果只是调整大小,请使用PixResizer 使用mogrify,它是我们的一部分,怎么样?如果您确实需要
使用,它是一个流行的命令行工具套件的接口,用于完成这类工作。也可用。您需要调整它的大小,还是通过编程方式调整大小?
如果只是调整大小,请使用PixResizer 使用mogrify,它是我们的一部分,怎么样?如果您确实需要从Perl控制它,那么您可以使用,或者。它可以在shell中吗
mkdir resized
for a in *.jpg; do convert "$a" -resize 60% resized/"$a"; done
如果您有>1个core,可以这样做:
find . -maxdepth 1 -type f -name '*.jpg' -print0 | xargs -0 -P3 -I XXX convert XXX -resize 60% resized/XXX
-P3表示您希望同时调整最多3个图像的大小(并行化)
如果您不需要保留原件,可以使用mogrify,但我更喜欢使用convert,然后使用rm。。。;mv…-为了安全起见,如果调整大小失败(无论出于何种原因)。如果您想以编程方式进行调整(我假设是这样),请使用PIL来调整大小,例如
newIm = im.resize((newW, newH)
然后将其保存到同一文件或新位置
递归遍历文件夹,并对所有图像应用调整大小功能
我已经提出了一个样本脚本,我认为将为您工作。您可以对其进行改进:可能使其图形化,添加更多选项,例如相同的扩展或可能全部为png,调整采样线性/双线性等
import os
import sys
from PIL import Image
def resize(folder, fileName, factor):
filePath = os.path.join(folder, fileName)
im = Image.open(filePath)
w, h = im.size
newIm = im.resize((int(w*factor), int(h*factor)))
# i am saving a copy, you can overrider orginal, or save to other folder
newIm.save(filePath+"copy.png")
def bulkResize(imageFolder, factor):
imgExts = ["png", "bmp", "jpg"]
for path, dirs, files in os.walk(imageFolder):
for fileName in files:
ext = fileName[-3:].lower()
if ext not in imgExts:
continue
resize(path, fileName, factor)
if __name__ == "__main__":
imageFolder=sys.argv[1] # first arg is path to image folder
resizeFactor=float(sys.argv[2])/100.0# 2nd is resize in %
bulkResize(imageFolder, resizeFactor)
我不确定。首先,它并没有说这是一次性的工作。第二,“Irfan视图”可能不是一个选项-例如,由于操作系统的限制。第三,ImageMagick是如此复杂,甚至将其用作批处理工具也是一种编程。感谢这一点,这正是我想要的。