Hallo,
ich würde gerne den numerischen Wert aus einer Variable in ein Bild umwandeln.
Gibt es dafür eine Bibliothek?
Mit Tkinter kann man GUIs erstellen, ich suche etwas ähnliches um JPGs zu erstellen.
Danke,
Horst
Bild aus Wert erstellen
- DeaD_EyE
- User
- Beiträge: 1206
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Klar, überhaupt kein Problem:
Wie war noch mal die Frage?
Code: Alles auswählen
from urllib.request import urlopen
from PIL import Image
variable = urlopen(
"https://www.python-forum.de/ext/planetstyles/flightdeck/store/logo-2.png"
)
img = Image.open(variable)
img.show()
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Danke.
Das ist noch nicht ganz was ich will ...
... und jetzt soll die temperatur1 als Zahl im logo-2 abgebildet sein und das Gesamtbild als JPG geschrieben werden.
Danke,
Horst
Das ist noch nicht ganz was ich will ...
Code: Alles auswählen
file = open('/sys/bus/w1/devices/28-6064dd0664ff/w1_slave')
filecontent = file.read()
file.close()
stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000
temperatur1 = str('%4.1f' % temperature)
from urllib.request import urlopen
from PIL import Image
variable = urlopen(
"https://www.python-forum.de/ext/planetstyles/flightdeck/store/logo-2.png"
)
img = Image.open(variable)
img.show()
Danke,
Horst
Ich weiß nicht, warum dead_eye den Code gepostet hat - er hat nix mit deiner Frage zu tun. Die immer noch spektakulär schlecht gestellt ist. Aber das Modul, dass er nutzt, kann sowas: https://pillow.readthedocs.io/en/stable ... eDraw.text
Damit kannst du Werte in ein Bild schreiben, und das im gewünschten Format speichern. JPEG ist bei Text übrigens eine sehr schlechte Wahl, benutze lieber PNG.
Damit kannst du Werte in ein Bild schreiben, und das im gewünschten Format speichern. JPEG ist bei Text übrigens eine sehr schlechte Wahl, benutze lieber PNG.
Danke __deets__!
Trotz meiner spektakulär schlecht gestellten Frage hast Du verstanden was ich suche
Ich werde mir das ansehen. Obwohl ich schon auf der ersten blick sehe, dass das etwas länger dauert bis ichs kapier.
Danke ,
Horst
Trotz meiner spektakulär schlecht gestellten Frage hast Du verstanden was ich suche

Ich werde mir das ansehen. Obwohl ich schon auf der ersten blick sehe, dass das etwas länger dauert bis ichs kapier.
Danke ,
Horst
- __blackjack__
- User
- Beiträge: 13939
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Sirius3: Das wird sich ändern — in Zukunft wird das nicht mehr aus dem Internet kopiert, sondern von ChatGPT vorgelesen. 
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
- DeaD_EyE
- User
- Beiträge: 1206
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Welche Frage? Worum geht es denn überhaupt?
Genau das wollte ich erreichen:Die immer noch spektakulär schlecht gestellt ist.
Ich muss da immer an den Kollegen denken, der ein paar tausend Euro für etwas bezahlt hat, was nicht genau spezifiziert worden ist.... und jetzt soll die temperatur1 als Zahl im logo-2 abgebildet sein und das Gesamtbild als JPG geschrieben werden.
Ergebnis: Genau die Funktion, die er braucht, muss ich jetzt programmieren, obwohl ich mit dem Projekt nichts mehr zu tun haben wollte!
Code: Alles auswählen
import re
import math
from urllib.request import urlopen
from PIL import Image
from PIL.Image import Resampling
from PIL.ImageDraw import ImageDraw
from PIL.ImageFont import truetype
from PIL.ImageOps import invert
def get_img(url):
"""Bild von URL holen"""
return Image.open(urlopen(url))
def read(device_id: str) -> float:
"""
Temperatur auslesen und als float zurückgeben
"""
with open(f"/sys/bus/w1/devices/{device_id}/w1_slave") as fd:
data = fd.read()
if not (match := re.search(r"t=(\d+)", data)):
raise ValueError("Could not find t=xxxx")
return int(match.group(1)) / 1_000
def main():
# Habe keine Sensoren, musst du selbst testen
# device_id = "28-6064dd0664ff"
# temperatur = read(device_id)
# temperatur einfach als Variable gesetzt
temperatur = 13.1337
text = f"{temperatur} °C"
# festlegen der Auflösung
width, height = 640, 480
# neues Bild
img = Image.new("RGB", (width, height))
# z.B. Bild vom Forum als Hintergrund verwenden
forum_bild = get_img("https://www.python-forum.de/ext/planetstyles/flightdeck/store/logo-2.png")
# größe ändern -> nach RGB umwandeln -> invertieren (geht nicht mit RGBA)
forum_bild = invert(forum_bild.resize((width, height), Resampling.BICUBIC).convert("RGB"))
# jetzt das forum_bild nach img (leeres Bild) pasten
img.paste(forum_bild)
# ImageDraw kann zeichnen und Text zum Bild hinzufügen
drw = ImageDraw(img)
# du musst eine Schriftart verwenden, die auf deinem System
# installiert ist
font = truetype("/usr/share/fonts/TTF/JetBrainsMono-Regular.ttf", 46)
# hatte jetzt keine bessere möglichkeit gefunden an
# die Länge und Höhe des Textes zu kommen
# aber die Funktion liefert wenigstens integer zurück
_, _, text_length, text_height = font.getbbox(text)
# xy berechnen, um den Text in der Mitte zu positionieren
xy = (width - text_length) // 2, (height - text_height) // 2
# Text zeichnen
drw.text(xy, text, font=font, fill=(0,0,0), stroke_fill=(255,0,0), stroke_width=5)
# Bild zeigen, besser du machst img.save("bild.jpg")
# img.save("test.jpg")
img.show()
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server