【发布时间】:2019-11-06 02:03:34
【问题描述】:
我正在尝试创建一个脚本来更改文件夹中所有图像的对比度和清晰度,并将其作为 filename_edited.jpg 保存到新文件夹中
我正在使用 pythong 3.7,导入 os 和 PIL。我有一个包含一些图像的文件夹 - DJI_001.jpg、DJI_002.jpg 等等。包含图像的文件夹称为 test。
我希望他们去的文件夹在 ..\test\novo 中称为“novo”
最初我有这个。它可以工作,但会将图像保存在同一文件夹中:
import PIL
from PIL import Image, ImageEnhance
import os.path, sys
path = "C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test"
dirs = os.listdir(path)
def teste():
for item in dirs:
fullpath = os.path.join(path,item)
if os.path.isfile(fullpath):
img = Image.open(fullpath)
f, e = os.path.splitext(fullpath)
sharpness = ImageEnhance.Sharpness(img)
sharp = sharpness.enhance(10.0)
newimg = sharp
contrast = ImageEnhance.Contrast(newimg)
cont = contrast.enhance(2.3)
head, tail = os.path.split(fullpath)
cont.save(f + "_edited.jpg")
teste()
所以经过一些研究后,我尝试将完整路径拆分为头部和尾部。 tail 变量为我获取文件名。
我这样做了,所以每次循环时,它都可以保存到我的新文件夹 + 尾部的文件路径中。
所以我尝试了这个:
def sha():
for item in dirs:
fullpath = os.path.join(path,item)
if os.path.isfile(fullpath):
img = Image.open(fullpath)
#f, e = os.path.splitext(fullpath) #don't need this here
sharpness = ImageEnhance.Sharpness(img)
sharp = sharpness.enhance(10.0)
newimg = sharp
contrast = ImageEnhance.Contrast(newimg)
cont = contrast.enhance(2.3)
head, tail = os.path.split(fullpath)
cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo" + tail)
print("this is the filepath: " + head)
print("this is the filename: " + tail)
sha()
我认为这可行,但它将文件保存在同一目录中,如 novoDJI_001.jpg、novoDJI_002.jpg 等。
如果有帮助,我添加了几张图片:
Saving in the same folder 和 Trying to save on a new folder
所以,在我的第二次尝试中(更像是第 20 次但很好),如您所见,我对文件路径进行了惰性化,但 \test\novo 中名为 novo 的新文件夹最终出现在文件名中。
非常感谢任何帮助,我确信这很简单,但我在过去的 5 个小时里都在做这个,但我找不到它为什么会这样!谢谢!
【问题讨论】:
标签: python path operating-system python-imaging-library