要做特效,必不可少的就是素材图片,比如:
这样的.
但是这种素材使用的时候都以文件夹为储存单位,还要遍历内部文件,不方便,
我更喜欢使用一长条那种素材,直接在程序中进行剪切就好,所以这里写个小工具用来规整素材图片.使用PyQt解和PIL库(python比c++更方便一点)
from PyQt5.Qt import *
import sys
from PIL import Image
class DEMO(QWidget):
def __init__(self):
super(DEMO,self).__init__()
self.initUI()
self.list_resourceFiles=[]
self.string_targetFile=r"C:\Users\DELL\Desktop"
self.string_prefix=""
def initUI(self):
self.resize(800, 600)
layout_ver=QVBoxLayout()
self.btn_chooseFile=QPushButton("选择素材文件")
self.btn_outputFile=QPushButton("选择输出文件夹")
self.lineEdit_prefix=QLineEdit()
self.btn_do=QPushButton("Do it!")
layout_ver.addWidget(self.btn_chooseFile)
layout_ver.addWidget(self.btn_outputFile)
layout_ver.addWidget(self.lineEdit_prefix)
layout_ver.addWidget(self.btn_do)
self.setLayout(layout_ver)
self.lineEdit_prefix.setPlaceholderText("请输入前缀")
self.btn_chooseFile.clicked.connect(self.set_ResouceFiles)
self.btn_outputFile.clicked.connect(self.set_TargetFile)
self.btn_do.clicked.connect(self.Do_it)
self.lineEdit_prefix.textChanged.connect(self.set_Prefix)
def set_ResouceFiles(self):
self.list_resourceFiles=QFileDialog.getOpenFileNames(
self,
"选择要合并的素材图片",
r"C:\Users\DELL\Desktop",
"图片(*.png *jpg)",
"图片(*.png *jpg)"
)[0]
print(self.list_resourceFiles)
def set_TargetFile(self):
self.string_targetFile = QFileDialog.getExistingDirectory(directory="./")
print(self.string_targetFile)
def set_Prefix(self):
self.string_prefix= self.lineEdit_prefix.text()
def Do_it(self):
img_info=Image.open(self.list_resourceFiles[0])
int_width=img_info.width
int_height=img_info.height
img_target=Image.new("RGBA",(int_width*len(self.list_resourceFiles),int_height))
for i in range(len(self.list_resourceFiles)):
img_current=Image.open(self.list_resourceFiles[i])
img_target.paste(img_current,(i*int_width,0))
img_target.save(self.string_targetFile+"/"+self.string_prefix+"_"+str(int_width)+"_"+str(int_height)+"_"+str(len(self.list_resourceFiles))+".png")#+)self.string_prefix+"_"+str(int_width)+"_"+str(int_height)+".png")
if __name__=="__main__":
app=QApplication(sys.argv)
p=DEMO()
p.show()
sys.exit(app.exec_())
只要一跑这个py文件就好了,很方便(比PS)