文章目录
在批处理图像文件大小Python代码(图片格式都是JPG或者JPEG,以下代码可使用):
# -*- coding: utf-8 -*-
import os
import glob
from PIL import Image
import os.path
file='D:/dogdog'
#修改图片文件大小jpgfile:图片文件;savedir:修改后要保存的路径'''
def convertjpg(jpgfile, savedir, width=1280, height=800):
img = Image.open(jpgfile)
new_img = img.resize((width, height), Image.BILINEAR)
new_img.save(os.path.join(savedir, os.path.basename(jpgfile)))
#''查找给定路径下图片文件,并修改其大小'''
def modifyjpgSize(file, saveDir):
for jpgfile in glob.glob(file):
convertjpg(jpgfile, saveDir)
# 测试代码
saveDir = r'D:\dog2'
modifyjpgSize(file, saveDir)
在运行过程中,出现错误
OSError: cannot write mode RGBA as JPEG
原因:我的图像文件中有png格式的。
查资料发现是PNG有RGBA四个通道,而JPG是RGB三个通道,所以PNG转BMP时候程序不知道A通道怎么办,就会产生错误。
解决方法就是检查通道数,舍弃A通道。
解决在代码中加入
if 'jpg' in file[-4:]:
im = Image.open(file)
r, g, b, a = im.split()
im = Image.merge("RGB", (r, g, b))
os.remove(file)
im.save(file[:-4] + ".jpg")
file = file[:-4] + ".jpg"
批处理图像大小Python最终代码(适用于图像文件有png格式的)
# -*- coding: utf-8 -*-
import os
import glob
from PIL import Image
import os.path
file='D:/dogdog'
if 'jpg' in file[-4:]:
im = Image.open(file)
r, g, b, a = im.split()
im = Image.merge("RGB", (r, g, b))
os.remove(file)
im.save(file[:-4] + ".jpg")
file = file[:-4] + ".jpg"
#修改图片文件大小jpgfile:图片文件;savedir:修改后要保存的路径'''
def convertjpg(jpgfile, savedir, width=1280, height=800):
img = Image.open(jpgfile)
new_img = img.resize((width, height), Image.BILINEAR)
new_img.save(os.path.join(savedir, os.path.basename(jpgfile)))
#''查找给定路径下图片文件,并修改其大小'''
def modifyjpgSize(file, saveDir):
for jpgfile in glob.glob(file):
convertjpg(jpgfile, saveDir)
# 测试代码
saveDir = r'D:\dog2'
modifyjpgSize(file, saveDir)