空桑澈 2023-01-11 15:58 采纳率: 100%
浏览 86
已结题

用python编写可执行程序,实现对24位bmp图像的缩放并生成新的文件并保存,如何修改下列代码

用python编写可执行程序,实现对24位bmp图像的缩放并生成新的文件并保存,如何修改下列代码

import struct
import sys
'''
uint8_t  BYTE   == B
uint32_t DWORD  == I
int32_t  LONG   == i
uint16_t WORD   == H
'''
# format='<HIHHI'
class bf():
    Type = 0
    Size = 1
    Reserved1 = 2
    Reserved2 = 3
    OffBits = 4
# format='<IiiHHIIiiII'
class bi():
    Size = 0
    Width = 1
    Height = 2
    Planes = 3
    BitCount = 4
    Compression = 5
    SizeImage = 6
    XPelsPerMeter = 7
    YPelsPerMeter = 8
    ClrUsed = 9
    ClrImportant = 10
# format='<BBB'
class rgbt():
    Blue = 0
    Green = 1
    Red = 2
if __name__ == '__main__':
    with open('lol.bmp', 'rb') as f:
        bitmapfileheader = struct.unpack('<HIHHI', f.read(14))
        bitmapinfoheader = struct.unpack('<IiiHHIIiiII', f.read(40))
        if bitmapfileheader[bf.Type] != struct.unpack('<H', b'BM')[0]:
            print('Wrong file format!', file=sys.stderr)
            sys.exit(2)
        print(bitmapfileheader[bf.Size])
        print(bitmapinfoheader[bi.Height])
        print(bitmapinfoheader[bi.Width])
        print('Everything is OK.', file=sys.stdout)
    sys.exit(0)

  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-11 20:35
    关注

    该代码是一个简单的 Python 程序,用于读取一个名为 "lol.bmp" 的 24 位 BMP 图像文件。它使用了 Python 中的 struct 模块来读取文件中的二进制数据,并将其解析为具有意义的数值。

    要使该程序实现图像缩放并生成新的文件并保存的功能,需要进行以下操作:

    使用一个图像处理库,如 PIL 或 Pillow, 在读入图像之后进行缩放
    保存这个缩放后的图像到新的文件中
    示例代码如下:

    from PIL import Image
    
    with open('lol.bmp', 'rb') as f:
        image = Image.open(f)
        image = image.resize((new_width, new_height), resample=Image.BICUBIC)
        image.save("new_lol.bmp")
    
    

    假设你想将原始图像缩小一半,你可以将 new_width 和 new_height 设置为原来的宽度和高度的一半.
    需要注意的是,在上面的代码中默认使用 BICUBIC 算法进行重采样,你也可以尝试其他算法.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月11日