我正在尝试创建一个脚本,以更改文件夹中所有图像的对比度和清晰度,并将其另存为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变量为我获取文件名。
我这样做是为了每次循环,它可以保存到我的新文件夹+ 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个小时来解决这个问题,但是我找不到原因。谢谢!
答案 0 :(得分:1)
“ novo”和tail
之间的这一行中没有路径分隔符:
cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo" + tail)
请用以下内容替换它:
cont.save("C:\\Users\\r o d r i g o\\Desktop\\001 - progamer\\98 - Image brightness\\test\\novo\\" + tail) // '\\' added after 'novo'
或者您也可以使用它:
new_name = os.path.join( head, "novo", tail )
cont.save( new_name )