Skip to content

Instantly share code, notes, and snippets.

@kyl191
Created April 26, 2012 13:47
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save kyl191/2499730 to your computer and use it in GitHub Desktop.
Image Blender
# Mix rgb channels from subsequent images
from PIL import Image
import os, math, sys, random
os.chdir(sys.argv[1])
fileList = os.listdir(".")
random.shuffle(fileList)
(width, height) = Image.open(fileList[0]).size
nPhotos = len(fileList)
offset = width/float(nPhotos)
dst = Image.new("RGB", (width, height))
for index, file in enumerate(fileList):
fileNum = index
rkeep, g, b = Image.open(fileList[fileNum]).split()
# Loop back to 0 if we've reached the end of the image sequence,
# Otherwise use the green channel from the next image in the sequence
if fileNum == (nPhotos - 1):
fileNum = 0
else:
fileNum = fileNum + 1
r, gkeep, b = Image.open(fileList[fileNum]).split()
# Hack to make the flow more trivial - instead of looping around,
# We'll just use the second picture in the sequence for the second last
# And the first picture for the first
if fileNum >= (nPhotos - 1):
fileNum = nPhotos - fileNum
else:
fileNum = fileNum + 1
r, g, bkeep = Image.open(fileList[fileNum]).split()
src = Image.merge("RGB", (rkeep, gkeep, bkeep))
box = (int(math.floor(offset*index)), 0, int(math.ceil(offset*(index+1))), height)
print "Cropping " + file + " coords: "
print box
dst.paste(src.crop(box), box)
dst.save("teststaggeredrgb.jpg", "JPEG")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment