Die Idee von diesem Programm ist, bestehende Bilder in Streifen zu zerschneiden und dann wieder zufällig zusammenzusetzen.
Hier können noch mehr Beispiele gefunden werden
Um dies zu erreichen, öffnet das Programm zunächst das Bild und berechnet dann die Breite und Höhe des Bildes.
Anschliessend wird das Bild in die vorgegebene Anzahl an Streifen zerschnitten, entweder in horizontaler oder vertikaler Richtung.
Danach werden die Streifen in zufälliger Reihenfolge wieder zusammengesetzt und ein neues Bild erstellt.
Das Programm erzeugt dann einen eindeutigen Dateinamen und speichert das neue Bild.
Python
import PIL import Image
import random
import uuid
def horizontal_strips (img, width, height, num_strips):
# Calculate the strip height
strip_height = int(height/num_strips)
strips = []
for i in range(num_strips):
# Get the current strip
box = (0, i*strip_height, width, (i+1)*strip_height)
strip = img.crop(box)
strips.append(strip)
return strip_height, strips
def vertical_strips (img, width, height, num_strips):
# Calculate the strip width
strip_width = int(width/num_strips)
strips = []
for i in range(num_strips):
# Get the current strip
box = (i*strip_width, 0, (i+1)*strip_width, height)
strip = img.crop(box)
strips.append(strip)
return strip_width, strips
def main(inFile, num_strips, direction):
try:
# Open the image
img = Image.open(inFile)
except:
print("Something went wrong when opening the file: ", inFile)
# Get the height and width of the image
width, height = img.size
if (direction == "h"):
strip_dim, strips = horizontal_strips (img, width, height, num_strips)
else:
strip_dim, strips = vertical_strips (img, width, height, num_strips)
# Shuffle the strips
random.shuffle(strips)
# Reassemble the image
reassembled_img = Image.new('RGB', (width, height))
# for i in range num_strips:
offset = 0
for strip in strips:
if (direction == "h"):
reassembled_img.paste(strip, (0, offset))
else:
reassembled_img.paste(strip, (offset, 0))
offset += strip_dim
# make Filename
id = str(uuid.uuid4())
# Save the reassembled image
reassembled_img.save(f'reassembled_image-{id}.jpg')
if __name__ == "__main__":
# ------- Init -------
inFile = "berg.jpg" # Filename of input File
num_strips = 12 # Define the number of strips
direction = "v" # corp direction h = horizontal or v = vertical
main(inFile, num_strips, direction)