You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
from PIL import Image
|
|
import os
|
|
|
|
|
|
def func():
|
|
imgNew = Image.new("RGBA", (9*16, 10*16))
|
|
dir = os.getcwd()
|
|
for file in os.listdir(dir):
|
|
if file.endswith("png") and not file.startswith("output"):
|
|
img = Image.open(dir+"/"+file)
|
|
|
|
# 保证居中
|
|
offset = 0
|
|
midImg = img.size[0]//2
|
|
mid = 0
|
|
colorCountPre = 0
|
|
for j in reversed(range(img.size[1])):
|
|
colorCount = 0
|
|
first, last = 0, 0
|
|
for i in range(img.size[0]):
|
|
color = img.getpixel((i, j))
|
|
if color[3] != 0:
|
|
if colorCount == 0:
|
|
first = i
|
|
last = i
|
|
colorCount += 1
|
|
if colorCountPre == 0:
|
|
colorCountPre = colorCount
|
|
else:
|
|
if colorCount >= colorCountPre:
|
|
mid = (first+last)//2
|
|
offset = midImg - mid
|
|
break
|
|
|
|
# 调整size
|
|
a = img.size[0]-mid
|
|
half = (a if offset > 0 else img.size[0]-a)
|
|
imgSize = list(img.size)
|
|
imgSize[0] = half*2
|
|
if imgSize[0] % 2 == 1:
|
|
imgSize[0] += 1
|
|
if imgSize[1] % 2 == 1:
|
|
imgSize[1] += 1
|
|
|
|
move = half - a + offset*2
|
|
imgNew = Image.new("RGBA", tuple(imgSize))
|
|
for i in range(img.size[0]):
|
|
for j in range(img.size[1]):
|
|
color = img.getpixel((i, j))
|
|
imgNew.putpixel((i+move, j), color)
|
|
|
|
print(file,offset)
|
|
imgNew.save(file, "PNG")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
func()
|