我们从网上找来一批资源但是发现图片不是在同一个位置没有居中,这样的图片对于我们来说是不能直接使用的,所以需要把图片的像素位置整体移动一下,本来这是美术的工作,但是美术抱怨这个工作量太大了,所以这个工具就出来了。先把代码贴出来吧,python 2.7.8 版本的。
photo.py
#!/usr/bin/env python
# coding=utf-8
import os
from PIL import Image
import shutil
mainFile = u'生成'.encode("gb2312")
def CreateDir(path):
isExists=os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
# 创建目录操作函数
os.makedirs(path)
print path+ u'创建成功'.encode("gb2312")
return True
else:
# 如果目录存在则不创建,并提示目录已存在
#print path+u'目录已存在'.encode("gb2312")
return False
def transparent_back(img):
img = img.convert('RGBA')
L, H = img.size
#if L == 1 or H == 1:
#return False
return img
def combine_photo():
tip = u'请输入路径:'.encode("gb2312")
inputPath = raw_input(tip)
tip = u'请输入宽W:'.encode("gb2312")
W = raw_input(tip)
imageW = int(W)
tip = u'请输入长H:'.encode("gb2312")
H = raw_input(tip)
imageH = int(H)
path = ''
for x in inputPath:
path += x
if x == '\\':
path += '\\'
CreateDir(path+'\\'+mainFile)
#print(os.listdir(path))
for dirName in os.listdir(path):
dealDir = path+'\\'+dirName
print(dealDir)
if os.path.isdir(dealDir) and dirName != mainFile:
for pngName in os.listdir(dealDir):
if os.path.isfile(dealDir+'\\'+pngName):
img1 = Image.open(dealDir+'\\'+pngName)
img2 = transparent_back(img1)
str = pngName[0:-4]
saveFile = path+'\\'+mainFile+'\\'+dirName
if img2 != False:
toImage = Image.new('RGBA', (imageW, imageH),(255,255,255,0))
print u'处理图片'.encode("gb2312"),dealDir+'\\'+pngName
pos = []
txtName = dealDir+'\\Placements\\'+str+'.txt'
print u'打开目标txt'.encode("gb2312"),txtName
fp = open(txtName,'r')
done = False
while not done:
aline = fp.readline()
if aline != '' and aline != ' ':
if int(aline):
pos.append(int(aline))
else:
pos.append(0)
else:
done = True
fp.close()
if len(pos) == 0:
pos = [0,0]
r, g, b, a = img2.split()
toImage.paste(img2, (imageW/2+pos[0]-24,imageH/2+pos[1]-18))
CreateDir(saveFile)
toImage.save(saveFile+'\\'+str+'.png')
else:
print u'复制文件'.encode("gb2312"),
shutil.copy(dealDir+'\\'+pngName,saveFile+'\\'+str+'.png')
combine_photo()
代码也不是很复杂,支持多文件夹处理,但是需要每个图片的偏移量坐标,如果没有坐标的话也是白搭,还是得找美术。下面看下怎么使用:
这个文件夹 Placements 需要注意放到图片里面,里面是偏移量坐标
每张图片都有一个对应的偏移量坐标,x坐标 和 y坐标:
执行也很简单,如:
enter等执行完,在文件夹里面会生成一个 生成 文件夹
打开里面就是生成好的图片
这个时候你在看图片就是居中的图片了,我们就可以直接拿来用了,同时脚本支持设置图片的大小,我设置的就是500*500
好了,就分享到这里了。