53 lines
1.4 KiB
Python
53 lines
1.4 KiB
Python
# Gif:导出图标所在
|
|
# Icon:需要合成的图标
|
|
# Top:特效所在文件夹,从1开始,后缀png
|
|
# Temp:临时文件夹
|
|
# 注意:ICON需要和TOP中的宽度、高度、位深度相同
|
|
|
|
from skimage import io
|
|
import shutil
|
|
import imageio
|
|
import os
|
|
import math
|
|
import numpy as np
|
|
|
|
# 线性减淡
|
|
|
|
|
|
def Linear_dodge(img_1, img_2):
|
|
img = img_1 + img_2
|
|
mask_2 = img > 1
|
|
img = img * (1 - mask_2) + mask_2
|
|
return img
|
|
|
|
|
|
def compose_gif(img_paths, fileName):
|
|
gif_images = []
|
|
for path in img_paths:
|
|
gif_images.append(imageio.imread(path))
|
|
# 间隔100毫秒
|
|
imageio.mimsave("Gif/" + fileName[:-4] + ".gif", gif_images, duration=0.1)
|
|
|
|
|
|
if not os.path.exists("Temp"):
|
|
os.mkdir("Temp")
|
|
|
|
Top_List = os.listdir("Top/")
|
|
|
|
for file in os.listdir("Icon"):
|
|
file_path = os.path.join("Icon/", file)
|
|
if not os.path.isdir(file_path):
|
|
img_2 = io.imread(file_path)
|
|
img_2 = img_2 / 255.0
|
|
img_paths = []
|
|
for i in range(1, len(Top_List)):
|
|
file_name = os.path.join("Top/", str(i) + '.png')
|
|
img_1 = io.imread(file_name)
|
|
img_1 = img_1 / 255.0
|
|
img = Linear_dodge(img_1, img_2)
|
|
io.imsave('Temp\\' + str(i) + '.png', img)
|
|
img_paths.append('Temp\\' + str(i) + '.png')
|
|
compose_gif(img_paths, file)
|
|
shutil.rmtree('Temp')
|
|
os.mkdir("Temp")
|