读入调色板,修改rowLength计算
This commit is contained in:
parent
338b90f6f2
commit
f160f27709
51
main.py
51
main.py
|
@ -1,27 +1,35 @@
|
||||||
from math import floor
|
from math import floor
|
||||||
from tqdm import tqdm
|
from tqdm import tqdm
|
||||||
|
|
||||||
|
################## 数据输入 Start ##################
|
||||||
|
|
||||||
# 输入数据
|
# 输入数据
|
||||||
img = input("请输入图片路径:")
|
# img = input("请输入图片路径:")
|
||||||
new_width = int(input("请输入新宽度(px):"))
|
# new_width = int(input("请输入新宽度(px):"))
|
||||||
new_height = int(input("请输入新高度(px):"))
|
# new_height = int(input("请输入新高度(px):"))
|
||||||
print("模式 0 直接缩放")
|
# print("模式 0 直接缩放")
|
||||||
print("模式 1 高斯模糊缩放")
|
# print("模式 1 高斯模糊缩放")
|
||||||
mode = int(input("请输入模式:"))
|
# mode = int(input("请输入模式:"))
|
||||||
# img = 'imgs/1/2x3.bmp'
|
img = 'imgs/1/2x1.bmp'
|
||||||
# new_width = 512
|
new_width = 512
|
||||||
# new_height = 512
|
new_height = 512
|
||||||
# mode = 0
|
mode = 0
|
||||||
|
|
||||||
if (mode != 1):
|
if (mode != 1):
|
||||||
mode = 0
|
mode = 0
|
||||||
|
|
||||||
|
################## 数据输入 End ##################
|
||||||
|
|
||||||
|
################## 文件读入 Start ##################
|
||||||
|
|
||||||
# 读入图片
|
# 读入图片
|
||||||
with open(img, 'rb') as f:
|
with open(img, 'rb') as f:
|
||||||
imgBytes = f.read()
|
imgBytes = f.read()
|
||||||
for _ in tqdm(range(len(imgBytes)), "读入文件中"):
|
for _ in tqdm(range(len(imgBytes)), "读入文件中"):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
################## 文件读入 End ##################
|
||||||
|
|
||||||
|
|
||||||
# 十六进制转十进制
|
# 十六进制转十进制
|
||||||
def byteSize(begin, length):
|
def byteSize(begin, length):
|
||||||
|
@ -41,6 +49,8 @@ def sizeByte(size, length):
|
||||||
return b[::-1]
|
return b[::-1]
|
||||||
|
|
||||||
|
|
||||||
|
################## 文件头处理 Start ##################
|
||||||
|
|
||||||
# 位图文件头
|
# 位图文件头
|
||||||
# 检验文件头是否为 BM
|
# 检验文件头是否为 BM
|
||||||
if (imgBytes[0] != 66 or imgBytes[1] != 77):
|
if (imgBytes[0] != 66 or imgBytes[1] != 77):
|
||||||
|
@ -64,13 +74,28 @@ colorsNum = byteSize(46, 4) #调色板的颜色数,为0时表示颜色数为
|
||||||
icolorsNum = byteSize(50, 4) #重要颜色数,为0时表示所有颜色都是重要的;通常不使用本项
|
icolorsNum = byteSize(50, 4) #重要颜色数,为0时表示所有颜色都是重要的;通常不使用本项
|
||||||
colorsBoard = imgBytes[54:dataStart] #调色板
|
colorsBoard = imgBytes[54:dataStart] #调色板
|
||||||
|
|
||||||
|
colors = []
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while (i < len(colorsBoard)):
|
||||||
|
colors.append({
|
||||||
|
'r': colorsBoard[i],
|
||||||
|
'g': colorsBoard[i + 1],
|
||||||
|
'b': colorsBoard[i + 2],
|
||||||
|
'a': colorsBoard[i + 3],
|
||||||
|
})
|
||||||
|
i += 4
|
||||||
|
################## 文件头处理 End ##################
|
||||||
|
|
||||||
|
################## 像素点读入 Start ##################
|
||||||
|
|
||||||
# 变量预处理
|
# 变量预处理
|
||||||
pixels = []
|
pixels = []
|
||||||
for i in range(height):
|
for i in range(height):
|
||||||
pixels.append([])
|
pixels.append([])
|
||||||
rowLength = width
|
|
||||||
rowLength *= bpp // 8
|
rowLength = floor(width * bpp / 8)
|
||||||
while (rowLength % 4 != 0):
|
while (rowLength % 4 != 0 or rowLength == 0):
|
||||||
rowLength += 1
|
rowLength += 1
|
||||||
|
|
||||||
# 计算像素点
|
# 计算像素点
|
||||||
|
|
Loading…
Reference in New Issue