Image python打开目录错误
编写了一些代码来遍历包含200个图像的文件夹,以获得图像中最小像素数的值(即最小宽度和高度) 但我一直在犯这样的错误:Image python打开目录错误,image,python-3.x,python-imaging-library,Image,Python 3.x,Python Imaging Library,编写了一些代码来遍历包含200个图像的文件夹,以获得图像中最小像素数的值(即最小宽度和高度) 但我一直在犯这样的错误: File "pixelSizeCheck.py", line 9, in get_num_pixels width, height = Image.open(open(filepath)).size IsADirectoryError: [Errno 21] Is a directory: 当我运行此代码时: from PIL import Image import os.
File "pixelSizeCheck.py", line 9, in get_num_pixels
width, height = Image.open(open(filepath)).size
IsADirectoryError: [Errno 21] Is a directory:
当我运行此代码时:
from PIL import Image
import os.path
def get_num_pixels(filepath):
heightMin= 10000
widthMin= 10000
for filename in os.listdir(filepath):
if filename.endswith(".jpg") :
width, height = Image.open(open(filepath)).size
if width< widthMin:
widthMin = width
return widthMin
if height < heightMin:
heightMin = height
return heightMin
print (heightMin, widthMin)
get_num_pixels("filepath")
另外,我对python还比较陌生,因此对于如何改进代码的任何建议都将不胜感激。如果任何代码不整洁或不好,请提前道歉 您正试图打开正在扫描的目录:在
图像中。打开
呼叫:
open(filepath)
应该是(第二个错误是您也必须以二进制模式打开)
更好的方法是使用glob.glob
同时过滤并获取绝对路径:
for filename in os.listdir(filepath):
if filename.endswith(".jpg") :
width, height = Image.open(open(os.path.join(filepath,filename),"rb")).size
将成为(添加一个上下文管理器以确保文件已关闭):
如果我使用glob,我会在get_num_pixels width,height=Image.open(f).size文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/PIL/Image.py”中的第10行得到这个奇怪的错误文件“pixelSizeCheck.py”,第2419行,在open prefix=fp.read(16)文件中“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/codecs.py”,第321行,解码(结果,消耗)=self.\u buffer\u解码(数据,self.errors,final)UnicodeDecodeError:“utf-8”编解码器无法解码位置0中的字节0xff:起始字节无效。对不起,还有一个问题:您必须以二进制文件打开该文件。如何以二进制文件打开该文件?很抱歉,这是python的新版本
open(os.path.join(filepath,filename),"rb")
for filename in os.listdir(filepath):
if filename.endswith(".jpg") :
width, height = Image.open(open(os.path.join(filepath,filename),"rb")).size
for filename in glob.glob(os.path.join(filepath,"*.jpg")):
with open(filename,"rb") as f:
width, height = Image.open(f).size