旋转功能完成
This commit is contained in:
parent
a2bd7237fa
commit
b3e1d150fd
106
main.py
106
main.py
|
@ -58,10 +58,10 @@ new = sys.argv[3]
|
||||||
|
|
||||||
# 模式 0 双线性插值
|
# 模式 0 双线性插值
|
||||||
# 模式 1 最邻近插值
|
# 模式 1 最邻近插值
|
||||||
# 模式 2 旋转图片
|
|
||||||
|
|
||||||
mode = 0
|
mode = 0
|
||||||
flur = 0
|
flur = 0
|
||||||
|
angle = 0
|
||||||
|
|
||||||
if ('*' in new):
|
if ('*' in new):
|
||||||
new_width, new_height = map(int, sys.argv[3].split('*'))
|
new_width, new_height = map(int, sys.argv[3].split('*'))
|
||||||
|
@ -84,8 +84,6 @@ else:
|
||||||
if (angle not in [90, 180, 270]):
|
if (angle not in [90, 180, 270]):
|
||||||
error(4)
|
error(4)
|
||||||
|
|
||||||
mode = 2
|
|
||||||
|
|
||||||
################## 数据输入 End ##################
|
################## 数据输入 End ##################
|
||||||
|
|
||||||
################## 文件读入 Start ##################
|
################## 文件读入 Start ##################
|
||||||
|
@ -218,6 +216,10 @@ for currentRow in tqdm(range(height), "读入像素点中"):
|
||||||
################## 缩放图片 Start ##################
|
################## 缩放图片 Start ##################
|
||||||
|
|
||||||
# 变量预处理
|
# 变量预处理
|
||||||
|
if (angle != 0):
|
||||||
|
new_width = width
|
||||||
|
new_height = height
|
||||||
|
|
||||||
scale_w = new_width / width
|
scale_w = new_width / width
|
||||||
scale_h = new_height / height
|
scale_h = new_height / height
|
||||||
newpixels = []
|
newpixels = []
|
||||||
|
@ -291,13 +293,21 @@ for currentRow in tqdm(range(new_height), "计算新像素点中"):
|
||||||
# 处理新文件
|
# 处理新文件
|
||||||
newimgArray = [66, 77]
|
newimgArray = [66, 77]
|
||||||
|
|
||||||
rowLength = new_width
|
if (angle in [0, 180]):
|
||||||
rowLength *= bpp // 8
|
rowLength = floor(width * bpp / 8)
|
||||||
while (rowLength % 4 != 0):
|
while (rowLength % 4 != 0 or rowLength == 0):
|
||||||
rowLength += 1
|
rowLength += 1
|
||||||
|
new_fileSize = 54 + rowLength * new_height #文件头中的文件大小
|
||||||
|
new_imageSize = rowLength * new_height
|
||||||
|
else:
|
||||||
|
rowLength = floor(height * bpp / 8)
|
||||||
|
while (rowLength % 4 != 0 or rowLength == 0):
|
||||||
|
rowLength += 1
|
||||||
|
new_fileSize = 54 + rowLength * new_height #文件头中的文件大小
|
||||||
|
new_imageSize = rowLength * new_width
|
||||||
|
|
||||||
# 新文件头
|
# 新文件头
|
||||||
new_fileSize = 54 + rowLength * new_height #文件头中的文件大小
|
|
||||||
newimgArray.extend(sizeByte(new_fileSize, 4))
|
newimgArray.extend(sizeByte(new_fileSize, 4))
|
||||||
|
|
||||||
newimgArray.extend(sizeByte(0, 4))
|
newimgArray.extend(sizeByte(0, 4))
|
||||||
|
@ -310,10 +320,14 @@ new_headerSize = headerSize
|
||||||
newimgArray.extend(sizeByte(headerSize, 4))
|
newimgArray.extend(sizeByte(headerSize, 4))
|
||||||
|
|
||||||
new_width_b = sizeByte(new_width, 4)
|
new_width_b = sizeByte(new_width, 4)
|
||||||
newimgArray.extend(new_width_b)
|
|
||||||
|
|
||||||
new_height_b = sizeByte(new_height, 4)
|
new_height_b = sizeByte(new_height, 4)
|
||||||
newimgArray.extend(new_height_b)
|
|
||||||
|
if (angle in [0, 180]):
|
||||||
|
newimgArray.extend(new_width_b)
|
||||||
|
newimgArray.extend(new_height_b)
|
||||||
|
else:
|
||||||
|
newimgArray.extend(new_height_b)
|
||||||
|
newimgArray.extend(new_width_b)
|
||||||
|
|
||||||
new_nbplan = nbplan
|
new_nbplan = nbplan
|
||||||
newimgArray.extend(sizeByte(new_nbplan, 2))
|
newimgArray.extend(sizeByte(new_nbplan, 2))
|
||||||
|
@ -324,7 +338,6 @@ newimgArray.extend(sizeByte(bpp, 2))
|
||||||
new_compression = compression
|
new_compression = compression
|
||||||
newimgArray.extend(sizeByte(new_compression, 4))
|
newimgArray.extend(sizeByte(new_compression, 4))
|
||||||
|
|
||||||
new_imageSize = rowLength * new_height
|
|
||||||
newimgArray.extend(sizeByte(new_imageSize, 4))
|
newimgArray.extend(sizeByte(new_imageSize, 4))
|
||||||
|
|
||||||
new_wppm = wppm
|
new_wppm = wppm
|
||||||
|
@ -396,26 +409,59 @@ def flur(row, col):
|
||||||
return [r, g, b, a]
|
return [r, g, b, a]
|
||||||
|
|
||||||
|
|
||||||
for i in tqdm(range(len(newpixels)), "将像素点格式化中"):
|
if (angle in [0, 180]):
|
||||||
row = newpixels[i]
|
for i in tqdm(range(len(newpixels)), "将像素点格式化中"):
|
||||||
for col in range(len(row)):
|
row = newpixels[i]
|
||||||
if (1 == flur):
|
for col in range(len(row)):
|
||||||
print("?")
|
if (1 == flur):
|
||||||
newimgArray.extend(flur(i, col))
|
newimgArray.extend(flur(i, col))
|
||||||
else:
|
|
||||||
if (new_bpp // 8 == 3):
|
|
||||||
pixel = [
|
|
||||||
newpixels[i][col]['r'], newpixels[i][col]['g'],
|
|
||||||
newpixels[i][col]['b']
|
|
||||||
]
|
|
||||||
else:
|
else:
|
||||||
pixel = [
|
if (angle == 0):
|
||||||
newpixels[i][col]['r'], newpixels[i][col]['g'],
|
pixel = [
|
||||||
newpixels[i][col]['b'], newpixels[i][col]['a']
|
newpixels[i][col]['r'], newpixels[i][col]['g'],
|
||||||
]
|
newpixels[i][col]['b']
|
||||||
|
]
|
||||||
|
if (new_bpp == 32):
|
||||||
|
pixel.append(newpixels[i][col]['a'])
|
||||||
|
elif (angle == 180):
|
||||||
|
pixel = [
|
||||||
|
newpixels[len(newpixels) - i - 1][len(row) - col -
|
||||||
|
1]['r'],
|
||||||
|
newpixels[len(newpixels) - i - 1][len(row) - col -
|
||||||
|
1]['g'],
|
||||||
|
newpixels[len(newpixels) - i - 1][len(row) - col -
|
||||||
|
1]['b']
|
||||||
|
]
|
||||||
|
if (new_bpp == 32):
|
||||||
|
pixel.append(newpixels[len(newpixels) - i -
|
||||||
|
1][len(row) - col - 1]['a'])
|
||||||
newimgArray.extend(pixel)
|
newimgArray.extend(pixel)
|
||||||
newimgArray.extend(sizeByte(0, rowLength - len(row) * (new_bpp // 8)))
|
newimgArray.extend(sizeByte(0, rowLength - len(row) * (new_bpp // 8)))
|
||||||
|
else:
|
||||||
|
for i in tqdm(range(len(newpixels[0])), "将像素点格式化中"):
|
||||||
|
for j in range(len(newpixels) - 1, -1, -1):
|
||||||
|
if (angle == 270):
|
||||||
|
pixel = [
|
||||||
|
newpixels[j][i]['r'], newpixels[j][i]['g'],
|
||||||
|
newpixels[j][i]['b']
|
||||||
|
]
|
||||||
|
if (new_bpp == 32):
|
||||||
|
pixel.append(newpixels[j][i]['a'])
|
||||||
|
elif (angle == 90):
|
||||||
|
pixel = [
|
||||||
|
newpixels[len(newpixels) - j - 1][len(newpixels[0]) - i -
|
||||||
|
1]['r'],
|
||||||
|
newpixels[len(newpixels) - j - 1][len(newpixels[0]) - i -
|
||||||
|
1]['g'],
|
||||||
|
newpixels[len(newpixels) - j - 1][len(newpixels[0]) - i -
|
||||||
|
1]['b']
|
||||||
|
]
|
||||||
|
if (new_bpp == 32):
|
||||||
|
pixel.append(newpixels[len(newpixels) - j -
|
||||||
|
1][len(newpixels[0]) - i - 1]['a'])
|
||||||
|
newimgArray.extend(pixel)
|
||||||
|
newimgArray.extend(
|
||||||
|
sizeByte(0, rowLength - len(newpixels) * (new_bpp // 8)))
|
||||||
################## 字节计算 END ##################
|
################## 字节计算 END ##################
|
||||||
################## 写出文件 Start ##################
|
################## 写出文件 Start ##################
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue