kde-workspace/ksplash/ksplashx/utils/blend.py
2014-11-13 19:30:51 +02:00

66 lines
1.8 KiB
Python
Executable file

#!/usr/bin/env python
#
# This python helper script does blend 2 images together and produces
# a by KSplashX usuable PNG animation file.
#
# Use:
# blend.py img1.png img2.png output.png
#
import sys, os, getopt, Image, ImageFile
def generate(srcfile1,srcfile2,destfile):
srcimg1 = Image.open(srcfile1)
srcimg2 = Image.open(srcfile2)
(width1,height1) = srcimg1.size
(width2,height2) = srcimg2.size
maxwidth = width1>width2 and width1 or width2
maxheight = height1>height2 and height1 or height2
if width1 != maxwidth or height1 != maxheight:
srcimg1.resize( (maxwidth,maxheight) )
if width2 != maxwidth or height2 != maxheight:
srcimg2.resize( (maxwidth,maxheight) )
destimg = Image.new( "RGBA", (maxwidth*10,maxheight*2) )
for row in range(1,3):
for col in range(1,11):
if row==1:
alpha = col*row/10.0
else:
alpha = 1.0 - (col*row/20.0)
img = Image.blend(srcimg1, srcimg2, alpha)
x = maxwidth * col - maxwidth
y = maxheight * row - maxheight
destimg.paste(img,(x,y))
destimg.save(destfile)
def main(argv):
def usage():
print "Syntax: %s <inputimagefile1> <inputimagefile2> <outputimagefile>" % os.path.basename(argv[0])
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help"])
except getopt.GetoptError, err:
print str(err) # will print something like "option -a not recognized"
usage()
sys.exit(1)
for o, a in opts:
if o in ("-h", "--help"):
usage()
sys.exit()
else:
assert False, "unhandled option"
if len(args) < 3:
usage()
sys.exit(2)
generate(args[0],args[1],args[2])
if __name__ == "__main__":
main(sys.argv)