python imagesize无法解析BMP图像尺寸问题探究

python编程中,通过使用第三方包“imagesize”能够快速获取图像文件的尺寸。其基本原理是通过解析文件的格式,获取尺寸信息,从而避免加载所有数据到内存中去,达到快速获取图像尺寸。

一日,突然发现BMP图像获取的宽高分别为-1,-1。起初以为是图像文件有问题,但经过测试不同的BMP文件,获得的结果仍为-1。然后,调试代码发现是底层解析并未对BMP图像做出处理造成,于是查阅BMP相关资料,对底层代码进行修改,修改如下:

PS:imagesize的版本为1.2.0

        # handle BMP
        # 位图类别,根据不同的操作系统而不同,在Windows中,此字段的值总为‘BM’
        elif size >= 24 and head.startswith(b'BM'):
            try:
                fhandle.seek(0)
                byte = fhandle.read(32)
                # 小端 < little-endian 低地址村存放低位数据,高地址存放高位数据,倒着解析
                # 数据0x1756 小端存储: 56 17
                width, height = struct.unpack("<LL", byte[18:26])
            except struct.error:
                raise ValueError("Invalid BMP file")

修改代码添加到imagesize.py的get函数中!!!


若发现修改错误之处请留言指出,谢谢!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值