UserPreferences

UselessCode/ShadowDrop


./shadow.py input.png output.png みたいにして使うと、input.png に影をつけてoutput.png をつくる。

sample.pngoutput.png

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
#!/usr/bin/python

import Image
import ImageChops
import ImageFilter

def main(argv):
        fromfile = argv[1]
        tofile = argv[2]

        img = Image.open(fromfile)
        img = img.convert(mode='RGBA')
        x,y = img.size
        orig = Image.new('RGBA', (x+30, y+30))
        orig.paste(img, (0,0) + img.size)

        shadow = Image.new('RGBA', (x+30, y+30))
        shadow.paste(img, (15,15, x+15, y+15))

        shadowalpha = shadow.split()[3]
        shadowalpha = shadowalpha.filter(ImageFilter.BLUR).filter(ImageFilter.BLUR).filter(ImageFilter.BLUR)
        shadowzero = Image.new('L', shadow.size, 0)
        shadow = Image.merge('RGBA', (shadowzero, shadowzero, shadowzero, shadowalpha))

        out = ImageChops.composite(orig, shadow, orig)
        out.save(file(tofile, 'w'))


if __name__ == '__main__':
        import sys
        main(sys.argv)