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
		
	
| 
											2 years ago
										 | 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() |