From ad3274826bac6e0d5fb764159bc5d9620fe95659 Mon Sep 17 00:00:00 2001 From: Luthics Date: Mon, 9 Jan 2023 00:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8=E5=9B=BE?= =?UTF-8?q?=E7=89=87=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8F=8C=E7=BA=BF=E6=80=A7?= =?UTF-8?q?=E6=8F=92=E5=80=BC=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- imgs/1/1x3.bmp | Bin 66 -> 0 bytes imgs/1/2x1.bmp | Bin 70 -> 0 bytes imgs/1/2x3.bmp | Bin 70 -> 0 bytes imgs/16.bmp | Bin 122 -> 0 bytes imgs/2221.bmp | Bin 0 -> 296694 bytes imgs/256.bmp | Bin 1082 -> 0 bytes main.py | 122 +++++++++++++++++++++++++++++++++++++++++-------- 7 files changed, 103 insertions(+), 19 deletions(-) delete mode 100644 imgs/1/1x3.bmp delete mode 100644 imgs/1/2x1.bmp delete mode 100644 imgs/1/2x3.bmp delete mode 100644 imgs/16.bmp create mode 100644 imgs/2221.bmp delete mode 100644 imgs/256.bmp diff --git a/imgs/1/1x3.bmp b/imgs/1/1x3.bmp deleted file mode 100644 index 0e432494b4e27f6320e5ca6a956ed3c00288de30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 kcmZ?rbz*=3J0PV2#LPg<2*x0ifq?}~ViN!V{|5^K0AY9pKL7v# diff --git a/imgs/1/2x1.bmp b/imgs/1/2x1.bmp deleted file mode 100644 index a76cdbca24fa024cb94e204d9d59f5d2658040fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 ncmZ?rbz^`4J0PV2#Ed}91g1eO1_ll=iAntb|DT}&C=9{?dE5m? diff --git a/imgs/1/2x3.bmp b/imgs/1/2x3.bmp deleted file mode 100644 index 71fa0738a6f0be6d78e657e585ef0c34fac4d8f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70 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 height): + x2 = x1 + if (y2 >= width): + y2 = y1 + if (x1 == x2 and y1 == y2): + return pixels[x1][y1] + if (x1 == x2): + x = x1 + r = linear_single(y, y1, y2, pixels[x][y1]['r'], pixels[x][y2]['r']) + g = linear_single(y, y1, y2, pixels[x][y1]['g'], pixels[x][y2]['g']) + b = linear_single(y, y1, y2, pixels[x][y1]['b'], pixels[x][y2]['b']) + a = linear_single(y, y1, y2, pixels[x][y1]['a'], pixels[x][y2]['a']) + return {'r': r, 'g': g, 'b': b, 'a': a} + if (y1 == y2): + y = y1 + r = linear_single(x, x1, x2, pixels[x1][y]['r'], pixels[x2][y]['r']) + g = linear_single(x, x1, x2, pixels[x1][y]['g'], pixels[x2][y]['g']) + b = linear_single(x, x1, x2, pixels[x1][y]['b'], pixels[x2][y]['b']) + a = linear_single(x, x1, x2, pixels[x1][y]['a'], pixels[x2][y]['a']) + return {'r': r, 'g': g, 'b': b, 'a': a} + fy1_r = linear_single(x, x1, x2, pixels[x1][y1]['r'], pixels[x2][y1]['r']) + fy1_g = linear_single(x, x1, x2, pixels[x1][y1]['g'], pixels[x2][y1]['g']) + fy1_b = linear_single(x, x1, x2, pixels[x1][y1]['b'], pixels[x2][y1]['b']) + fy1_a = linear_single(x, x1, x2, pixels[x1][y1]['a'], pixels[x2][y1]['a']) + fy2_r = linear_single(x, x1, x2, pixels[x1][y2]['r'], pixels[x2][y2]['r']) + fy2_g = linear_single(x, x1, x2, pixels[x1][y2]['g'], pixels[x2][y2]['g']) + fy2_b = linear_single(x, x1, x2, pixels[x1][y2]['b'], pixels[x2][y2]['b']) + fy2_a = linear_single(x, x1, x2, pixels[x1][y2]['a'], pixels[x2][y2]['a']) + r = linear_single(y, y1, y2, fy1_r, fy2_r) + g = linear_single(y, y1, y2, fy1_g, fy2_g) + b = linear_single(y, y1, y2, fy1_b, fy2_b) + a = linear_single(y, y1, y2, fy1_a, fy2_a) + return {'r': r, 'g': g, 'b': b, 'a': a} + + # 计算新像素 for currentRow in tqdm(range(new_height), "计算新像素点中"): for currentCol in range(new_width): - ori_row = floor(currentRow / scale_h) - ori_col = floor(currentCol // scale_w) - newpixels[currentRow].append(pixels[ori_row][ori_col]) + if (mode == 0): + newpixels[currentRow].append(linear_insert(currentRow, currentCol)) + elif (mode == 1): + ori_row = floor(currentRow / scale_h) + ori_col = floor(currentCol / scale_w) + newpixels[currentRow].append(pixels[ori_row][ori_col]) # 处理新文件 newimgArray = [66, 77] @@ -185,8 +256,21 @@ newimgArray.extend(sizeByte(new_compression, 4)) new_imageSize = rowLength * new_height newimgArray.extend(sizeByte(new_imageSize, 4)) -# 调色板不做处理 -newimgArray.extend(sizeByte(0, new_headerSize + 14 - len(newimgArray))) +new_wppm = wppm +newimgArray.extend(sizeByte(new_wppm, 4)) + +new_hppm = hppm +newimgArray.extend(sizeByte(new_hppm, 4)) + +new_colorsNum = colorsNum +newimgArray.extend(sizeByte(new_colorsNum, 4)) + +new_icolorsNum = icolorsNum +newimgArray.extend(sizeByte(new_icolorsNum, 4)) + +new_colorsBoard = colorsBoard +for color in new_colorsBoard: + newimgArray.append(color) def flur(row, col): @@ -244,7 +328,9 @@ def flur(row, col): for i in tqdm(range(len(newpixels)), "将像素点格式化中"): row = newpixels[i] for col in range(len(row)): - if (mode == 0): + if (mode == 2): + newimgArray.extend(flur(i, col)) + else: if (new_bpp // 8 == 3): pixel = [ newpixels[i][col]['r'], newpixels[i][col]['g'], @@ -256,14 +342,12 @@ for i in tqdm(range(len(newpixels)), "将像素点格式化中"): newpixels[i][col]['b'], newpixels[i][col]['a'] ] newimgArray.extend(pixel) - elif (mode == 1): - newimgArray.extend(flur(i, col)) newimgArray.extend(sizeByte(0, rowLength - len(row) * (new_bpp // 8))) # 写入新的文件 newimgBytes = bytes(newimgArray) -with open(img[:-4] + "_new" + img[-4:], 'wb') as f: +with open(img[:-4] + "_" + str(mode) +"_new" + img[-4:], 'wb') as f: f.write(newimgBytes) for _ in tqdm(range(len(newimgBytes)), "写出图片中"): pass \ No newline at end of file