Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image python打开目录错误_Image_Python 3.x_Python Imaging Library - Fatal编程技术网

Image python打开目录错误

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.

编写了一些代码来遍历包含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.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