Python 获取图片尺寸(无需加载图片到内存)

Python 获取图片尺寸(无需加载图片到内存)

在本文中,我们将介绍如何使用Python来获取图片的尺寸,而无需将整个图片加载到内存中。这对于处理大量图片时非常有用,可以节省内存并提高程序的效率。

阅读更多:Python 教程

使用Python库PIL

Python Imaging Library(PIL)是一个功能强大的图像处理库,可以用于处理各种图像操作。我们可以使用PIL库中的Image模块来获取图片的尺寸。

首先,我们需要安装PIL库。可以使用以下命令来安装PIL:

pip install pillow
Python

安装完成后,我们可以开始编写代码来获取图片的尺寸。

from PIL import Image

def get_image_size(image_path):
    with Image.open(image_path) as img:
        width, height = img.size
        return width, height

image_path = 'path/to/image.jpg'
width, height = get_image_size(image_path)
print(f"Image size: {width} x {height}")
Python

上述代码首先使用Image.open()函数来打开图片文件,然后使用img.size属性获取图片的尺寸。最后,我们将图片的宽度和高度返回并打印出来。

使用Python内置模块struct

除了使用PIL库外,我们还可以使用Python内置模块struct来获取图片的尺寸。这种方法适用于读取图片文件的二进制数据,并解析其中的信息来获取尺寸。

下面是使用struct模块获取图片尺寸的示例代码:

import struct

def get_image_size(image_path):
    with open(image_path, 'rb') as f:
        data = f.read(30)

    if data.startswith(b'\211PNG\r\n\032\n'):
        width, height = struct.unpack('>LL', data[16:24])
    elif data.startswith(b'\x89PNG\r\n\032\n'):
        width, height = struct.unpack('>LL', data[8:16])
    elif data.startswith(b'GIF87a') or data.startswith(b'GIF89a'):
        width, height = struct.unpack('<HH', data[6:10])
    elif data.startswith(b'\xFF\xD8'):
        f.seek(0)
        data = f.read(2)
        height = -1
        while data[0] == 0xFF:
            marker = data[1]
            size = struct.unpack('>H', f.read(2))[0]
            if marker == 0xC0:
                data = f.read(3)
                height, width = struct.unpack('>HH', data)
                break
            else:
                f.read(size - 2)
            data = f.read(2)
    else:
        raise ValueError('Unsupported image format')

    return width, height

image_path = 'path/to/image.jpg'
width, height = get_image_size(image_path)
print(f"Image size: {width} x {height}")
Python

上述代码中,我们首先使用open()函数以二进制模式打开图片文件,并读取前30字节的数据。然后,我们根据不同文件类型的格式解析其中的信息,从而获得图片的尺寸。

总结

本文介绍了两种获取图片尺寸的方法:使用PIL库和使用Python内置模块struct。PIL库提供了简单易用的函数来处理图片,尤其适用于对图片进行各种操作。而使用struct模块则可以直接解析图片文件的二进制数据,适用于对图片的底层信息进行更深入的处理。

在实际应用中,根据不同的需求和场景选择合适的方法来获取图片尺寸是很重要的。希望本文对你在Python中获取图片尺寸的过程中有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册