优化文件头
Before Width: | Height: | Size: 66 B After Width: | Height: | Size: 66 B |
After Width: | Height: | Size: 70 B |
After Width: | Height: | Size: 70 B |
Before Width: | Height: | Size: 78 B After Width: | Height: | Size: 78 B |
Before Width: | Height: | Size: 66 B After Width: | Height: | Size: 66 B |
26
main.py
|
@ -8,10 +8,10 @@ new_height = int(input("请输入新高度(px):"))
|
||||||
print("模式 0 直接缩放")
|
print("模式 0 直接缩放")
|
||||||
print("模式 1 高斯模糊缩放")
|
print("模式 1 高斯模糊缩放")
|
||||||
mode = int(input("请输入模式:"))
|
mode = int(input("请输入模式:"))
|
||||||
# img = 'imgs/bw.bmp'
|
# img = 'imgs/1/2x3.bmp'
|
||||||
# new_width = 512
|
# new_width = 512
|
||||||
# new_height = 512
|
# new_height = 512
|
||||||
# mode = 1
|
# mode = 0
|
||||||
|
|
||||||
if (mode != 1):
|
if (mode != 1):
|
||||||
mode = 0
|
mode = 0
|
||||||
|
@ -41,7 +41,7 @@ def sizeByte(size, length):
|
||||||
return b[::-1]
|
return b[::-1]
|
||||||
|
|
||||||
|
|
||||||
# 文件头处理
|
# 位图文件头
|
||||||
# 检验文件头是否为 BM
|
# 检验文件头是否为 BM
|
||||||
if (imgBytes[0] != 66 or imgBytes[1] != 77):
|
if (imgBytes[0] != 66 or imgBytes[1] != 77):
|
||||||
print("当前文件非 BMP 格式")
|
print("当前文件非 BMP 格式")
|
||||||
|
@ -51,14 +51,18 @@ fileSize = byteSize(2, 4) #文件头中的文件大小
|
||||||
dataStart = byteSize(10, 4) #文件头中的数据开始字节
|
dataStart = byteSize(10, 4) #文件头中的数据开始字节
|
||||||
|
|
||||||
# bmp 文件头
|
# bmp 文件头
|
||||||
headerSize = byteSize(14, 4)
|
headerSize = byteSize(14, 4) #该头结构的大小(40字节)
|
||||||
width = byteSize(18, 4)
|
width = byteSize(18, 4) #位图宽度,单位为像素(有符号整数)
|
||||||
height = byteSize(22, 4)
|
height = byteSize(22, 4) #位图高度,单位为像素(有符号整数)
|
||||||
nbplan = byteSize(26, 2)
|
nbplan = byteSize(26, 2) #色彩平面数;只有1为有效值
|
||||||
bpp = byteSize(28, 2)
|
bpp = byteSize(28, 2) #每个像素所占位数,即图像的色深。典型值为1、4、8、16、24和32
|
||||||
compression = byteSize(30, 4)
|
compression = byteSize(30, 4) #所使用的压缩方法,可取值见下表。
|
||||||
imageSize = byteSize(34, 4)
|
imageSize = byteSize(34, 4) #图像大小。指原始位图数据的大小(详见后文),与文件大小不是同一个概念。
|
||||||
# 调色板不做处理
|
wppm = byteSize(38, 4) #图像的横向分辨率,单位为像素每米(有符号整数)
|
||||||
|
hppm = byteSize(42, 4) #图像的纵向分辨率,单位为像素每米(有符号整数)
|
||||||
|
colorsNum = byteSize(46, 4) #调色板的颜色数,为0时表示颜色数为默认的2^色深个
|
||||||
|
icolorsNum = byteSize(50, 4) #重要颜色数,为0时表示所有颜色都是重要的;通常不使用本项
|
||||||
|
colorsBoard = imgBytes[54:dataStart] #调色板
|
||||||
|
|
||||||
# 变量预处理
|
# 变量预处理
|
||||||
pixels = []
|
pixels = []
|
||||||
|
|