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