export as image

This commit is contained in:
2022-01-06 21:38:47 +01:00
parent 5087df5bdd
commit 743c0306da
2 changed files with 36 additions and 13 deletions

View File

@ -3,6 +3,8 @@ import turtle
import lSystems
import pickle
from dataclasses import dataclass
from PIL import Image
import io
@dataclass
class Save:
@ -76,7 +78,8 @@ l: ein Lindenmayer-System löschen
b: Hintergrundfarbe ändern
q: Programm beenden
s: Lindenmayer-Systeme speichern
r: zuvor gespeicherte Lindenmayer-Systeme wiederherstellen""")
r: zuvor gespeicherte Lindenmayer-Systeme wiederherstellen
e: als Bilddatei exportieren""")
case "d":
for i, lSystem in enumerate(lSystems.LSystems):
print(f"{i}: {lSystem.name}")
@ -90,7 +93,7 @@ r: zuvor gespeicherte Lindenmayer-Systeme wiederherstellen""")
match input("Möchtest du das das Lindenmayer-System das ganze Fenster ausfüllt? [J/n]: ").lower():
case "j"|"":
inputError = False
drawer.draw(lSystem, recursionDepth, turtle.Vec2D(0, 0), rotation, turtleObject.screen._window_size(), color)
drawer.draw(lSystem, recursionDepth, turtle.Vec2D(0, 0), rotation, turtle.Vec2D(turtleObject.screen.window_width(), turtleObject.screen.window_height()) - turtle.Vec2D(3, 3), color)
takeInput(turtleObject)
case "n":
inputError = False
@ -128,27 +131,37 @@ r: zuvor gespeicherte Lindenmayer-Systeme wiederherstellen""")
try:
file = open(filepath, "wb")
pickle.dump(save, file)
file.close()
print("erfolgreich gespeichert")
except Exception as err:
print(err)
finally:
file.close()
case "r":
filepath = inputString("Datei, die geladen werden soll eingeben")
save: Save
try:
file = open(filepath, "rb")
save = pickle.load(file)
file.close()
turtleObject.screen.clear()
backgroundColor = save.backgroundColor
turtleObject.screen.bgcolor(save.backgroundColor)
for drawingInfo in save.drawingInfos:
drawing = drawer.Drawing(drawingInfo, drawer.newTurtle())
drawer.drawScaled(drawing)
except Exception as err:
print(err)
case "e":
# https://stackoverflow.com/questions/34777676/how-to-convert-a-python-tkinter-canvas-postscript-file-to-an-image-file-readable
canvas = turtleObject.screen.getcanvas()
postscript = canvas.postscript(colormode = "color")
image = Image.open(io.BytesIO(postscript.encode("utf-8")))
filepath = inputString("Dateipfad für das zu exportierende Bild eingeben. Das Bildformat wird über die Dateiendung bestimmt")
try:
image.save(filepath)
print("Bild gespeichert")
except ValueError:
print("Fehler: unbekannte Dateiendung")
except Exception as err:
print(err)
finally:
file.close()
turtleObject.screen.clear()
backgroundColor = save.backgroundColor
turtleObject.screen.bgcolor(save.backgroundColor)
for drawingInfo in save.drawingInfos:
drawing = drawer.Drawing(drawingInfo, drawer.newTurtle())
drawer.drawScaled(drawing)
case _:
print("unbekannter Befehl")
if inputValue != "d":

10
setup.py Normal file
View File

@ -0,0 +1,10 @@
from setuptools import setup, find_packages
setup(
name='lindenmayer',
version='0.1.0',
packages=find_packages(include=['lindenmayer']),
install_requires=[
"pillow",
],
)