Rai*_*Son 6 python perl resize image image-scaling
我有一个充满图像的目录,我想调整大小到其原始大小的60%左右.
我该怎么做呢?可以是Python或Perl
干杯
EEF
Anu*_*yal 17
如果你想以编程方式进行,我假设是这种情况,使用PIL调整大小,例如
newIm = im.resize((newW, newH)
Run Code Online (Sandbox Code Playgroud)
然后将其保存到同一文件或新位置.
递归浏览文件夹并将调整大小功能应用于所有图像.
我想出了一个我觉得适合你的示例脚本.你可以改进它:也许使它成为图形,添加更多选项,例如相同的扩展或可能是所有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)
Run Code Online (Sandbox Code Playgroud)
mir*_*rod 11
如何使用mogrify,ImageMagick的一部分?如果你真的需要从Perl控制它,那么你可以使用Image :: Magick,Image :: Resize或Imager.
小智 10
它可以在壳中吗?
mkdir resized
for a in *.jpg; do convert "$a" -resize 60% resized/"$a"; done
Run Code Online (Sandbox Code Playgroud)
如果你有> 1核心,你可以这样做:
find . -maxdepth 1 -type f -name '*.jpg' -print0 | xargs -0 -P3 -I XXX convert XXX -resize 60% resized/XXX
Run Code Online (Sandbox Code Playgroud)
-P3表示您希望同时调整最多3个图像(并行化).
如果您不需要保留原件,可以使用mogrify,但我更喜欢使用convert,然后使用rm ......; mv ... - 如果调整大小(无论出于何种原因)失败,只是为了安全起见.