通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

python如何读取文件夹里所有图片大小

python如何读取文件夹里所有图片大小

Python读取文件夹里所有图片大小的方法:利用os模块遍历文件夹、通过PIL库获取图片信息、处理并显示结果。接下来,我们详细介绍这三步中的具体实现。

一、导入必要的库和模块

在处理图像大小时,首先需要导入Python的标准库os以及图像处理库PIL(Pillow)。os模块用于文件和目录操作,而PIL库则用于处理和分析图像。

import os

from PIL import Image

二、获取文件夹中的所有图片文件

使用os模块的os.listdir()方法遍历指定文件夹,获取该文件夹下所有文件的列表。然后通过文件扩展名筛选出图片文件。

def get_image_files(folder_path):

supported_extensions = ['.png', '.jpg', '.jpeg', '.bmp', '.gif']

return [os.path.join(folder_path, f) for f in os.listdir(folder_path) if os.path.splitext(f)[1].lower() in supported_extensions]

三、读取图片大小

使用PIL库中的Image类打开每一个图片文件,并获取其尺寸信息。尺寸信息可以通过Image.size属性获取,该属性返回一个元组,包含图片的宽度和高度。

def get_image_sizes(image_files):

image_sizes = {}

for image_file in image_files:

with Image.open(image_file) as img:

image_sizes[image_file] = img.size

return image_sizes

四、输出结果

最后,将图片文件的路径及其对应的尺寸信息输出,可以打印在控制台或保存到文件中。

def print_image_sizes(image_sizes):

for image_file, size in image_sizes.items():

print(f"Image: {image_file}, Size: {size}")

五、完整示例代码

将上述所有步骤整合在一起,形成一个完整的Python脚本。

import os

from PIL import Image

def get_image_files(folder_path):

supported_extensions = ['.png', '.jpg', '.jpeg', '.bmp', '.gif']

return [os.path.join(folder_path, f) for f in os.listdir(folder_path) if os.path.splitext(f)[1].lower() in supported_extensions]

def get_image_sizes(image_files):

image_sizes = {}

for image_file in image_files:

with Image.open(image_file) as img:

image_sizes[image_file] = img.size

return image_sizes

def print_image_sizes(image_sizes):

for image_file, size in image_sizes.items():

print(f"Image: {image_file}, Size: {size}")

if __name__ == "__main__":

folder_path = "path_to_your_folder" # 替换为你的文件夹路径

image_files = get_image_files(folder_path)

image_sizes = get_image_sizes(image_files)

print_image_sizes(image_sizes)

六、优化与扩展

1、处理子文件夹中的图片

如果需要处理文件夹及其所有子文件夹中的图片,可以使用os.walk()函数遍历目录树。

def get_image_files_recursive(folder_path):

supported_extensions = ['.png', '.jpg', '.jpeg', '.bmp', '.gif']

image_files = []

for root, _, files in os.walk(folder_path):

for f in files:

if os.path.splitext(f)[1].lower() in supported_extensions:

image_files.append(os.path.join(root, f))

return image_files

2、处理不同类型的图像格式

Pillow库支持多种图像格式,如果需要支持更多的图像格式,可以通过扩展supported_extensions列表来实现。

supported_extensions = ['.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff', '.ico']

3、错误处理

在读取图像文件时,可能会遇到损坏的文件或不支持的格式,可以使用异常处理来捕获这些错误。

def get_image_sizes(image_files):

image_sizes = {}

for image_file in image_files:

try:

with Image.open(image_file) as img:

image_sizes[image_file] = img.size

except Exception as e:

print(f"Error processing {image_file}: {e}")

return image_sizes

七、总结

通过本文的介绍,我们了解了如何使用Python读取文件夹里所有图片的大小。主要步骤包括:导入必要的库和模块、获取文件夹中的所有图片文件、读取图片大小、输出结果。此外,还介绍了处理子文件夹中的图片、扩展支持的图像格式以及错误处理的方法。这些技巧不仅适用于读取图像大小,还可以应用于其他图像处理任务,如图像格式转换、批量图像处理等。

利用这些技术,您可以轻松地处理大规模的图像文件,为各种图像处理任务提供坚实的基础。希望本文对您有所帮助!

相关问答FAQs:

如何使用Python获取文件夹中所有图片的尺寸?
要获取文件夹中所有图片的尺寸,可以使用Python的os库结合PIL(Pillow)库。首先,遍历指定文件夹中的所有文件,筛选出图片文件,然后利用Pillow库打开图片并获取其尺寸。以下是一个简单的示例代码:

import os
from PIL import Image

folder_path = 'your_folder_path'  # 替换为你的文件夹路径
for filename in os.listdir(folder_path):
    if filename.endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
        img_path = os.path.join(folder_path, filename)
        with Image.open(img_path) as img:
            print(f"{filename}: {img.size}")  # 输出图片名称和尺寸

有哪些库可以帮助我读取图片的大小?
在Python中,常用的库有PillowOpenCVimageioPillow是处理图像最常用的库,能够轻松打开并读取图片的尺寸。OpenCV则适合处理视频和图片的计算机视觉任务,而imageio提供了简单的接口来读取和写入各种图像格式。选择合适的库取决于你的具体需求和项目背景。

如何确保我的代码能够处理不同格式的图片?
为了确保代码能处理多种图片格式,建议在文件筛选时使用文件扩展名列表,包括常见格式如.jpg.png.gif.bmp等。使用os.path.splitext()函数可以更加灵活地处理文件名,自动提取扩展名。通过这种方式,可以确保代码的兼容性,能够读取不同格式的图片。

相关文章