Text zu Bild?


19.02.2024, 15:29

zum Beispiel stellt die Liste

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0.17, 0.45, 0.58, 0.59, 0.47, 0.29, 0, 0, 0, 0], [0, 0, 0, 0.65, 1, 1, 1, 1, 1, 1, 0.65, 0, 0, 0], [0, 0, 0.26, 1, 0.67, 0.36, 0.21, 0.22, 0.47, 1, 1, 0.36, 0, 0], [0, 0, 0, 0.21, 0, 0, 0, 0, 0, 0.53, 1, 0.62, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.37, 1, 0.76, 0, 0], [0, 0, 0, 0, 0, 0, 0.04, 0.15, 0.24, 0.5, 1, 0.8, 0, 0], [0, 0, 0, 0.1, 0.51, 0.89, 1, 1, 1, 1, 1, 0.8, 0, 0], [0, 0, 0.1, 0.82, 1, 0.79, 0.46, 0.35, 0.31, 0.6, 1, 0.8, 0, 0], [0, 0, 0.51, 1, 0.67, 0, 0, 0, 0, 0.39, 1, 0.8, 0, 0], [0, 0, 0.75, 1, 0.44, 0, 0, 0, 0, 0.36, 1, 0.81, 0, 0], [0, 0, 0.67, 1, 0.56, 0, 0, 0, 0.27, 0.96, 1, 0.81, 0, 0], [0, 0, 0.35, 1, 1, 0.67, 0.46, 0.68, 1, 0.94, 1, 0.81, 0, 0], [0, 0, 0, 0.38, 0.89, 1, 1, 0.98, 0.6, 0.1, 1, 0.81, 0, 0], [0, 0, 0, 0, 0, 0.14, 0.22, 0, 0, 0, 0.08, 0.06, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] grafisch ein kleines a dar.

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit der Bibliothek PIL kann man Bilder erzeugen, welche man leicht in ein numpy-Array umwandeln kann.

from PIL import Image, ImageDraw
import numpy as np

image = Image.new('L', (64, 10), color="white")
draw = ImageDraw.Draw(image)
draw.text((0, 0), text="Hallo Welt!")
image.show()  
np.array(image)

Output:

Bild zum Beitrag

https://pillow.readthedocs.io/en/stable/reference/ImageDraw.html#PIL.ImageDraw.ImageDraw.text

Für andere Schriftarten muss noch ImageFont importiert werden.

https://pillow.readthedocs.io/en/stable/reference/ImageFont.html

 - (Python 3, Text zu Bild)

Theodor951Ernst 
Fragesteller
 19.02.2024, 16:24

Danke! Aber wie kann ich die Schriftgröße verändern?

0
Mathmaninoff, UserMod Light  19.02.2024, 23:57
@Theodor951Ernst

Mit ImageFont.

Obiges Beispiel würde dann so aussehen:

from PIL import Image, ImageDraw, ImageFont
import numpy as np
image = Image.new('L', (128, 20), color="white")
font = ImageFont.truetype(pfad, 20)
draw = ImageDraw.Draw(image)
draw.text((0, 0), text="Hallo Welt!", font=font)


image.show()
np.array(image)

Dabei ist pfad der Pfad, unter dem die Schriftart abgespeichert ist.

Auf Google Colab wäre das z.B.: "/usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf"

Auf Windows gibt es ein Windows-Ordner und darin einen Fonts-Ornder, wo die Schriftarten abgespeichert sind.

Die Standardschrift kann man nicht einfach nur vergrößern.

2
aus einem Text ein 2-demensionales Array mit den Zahlen von 0-255 machen, das dem Text entspricht

Das ist eine ziemlich vage Angabe.

Soll es wirklich ein Array sein? Arrays sind keiner der klassischen Python-eigenen Datentypen, auch wenn es sie in Numpy gibt. Üblich sind Listen und Tupel.

Was sind die zwei Dimensionen des "Arrays"? Ein Text ist erstmal eine Zeichenkette, und somit eine Dimension.

Warum nur 0..255 in Zeiten von Unicode?

Vielleicht kannst du ein Beispiel geben.


Theodor951Ernst 
Fragesteller
 19.02.2024, 15:27

also ich meine, ich möchte eine Liste erstellen, die das Bild darstellt,

zum Beispiel stellt die Liste

[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0.17, 0.45, 0.58, 0.59, 0.47, 0.29, 0, 0, 0, 0], [0, 0, 0, 0.65, 1, 1, 1, 1, 1, 1, 0.65, 0, 0, 0], [0, 0, 0.26, 1, 0.67, 0.36, 0.21, 0.22, 0.47, 1, 1, 0.36, 0, 0], [0, 0, 0, 0.21, 0, 0, 0, 0, 0, 0.53, 1, 0.62, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0.37, 1, 0.76, 0, 0], [0, 0, 0, 0, 0, 0, 0.04, 0.15, 0.24, 0.5, 1, 0.8, 0, 0], [0, 0, 0, 0.1, 0.51, 0.89, 1, 1, 1, 1, 1, 0.8, 0, 0], [0, 0, 0.1, 0.82, 1, 0.79, 0.46, 0.35, 0.31, 0.6, 1, 0.8, 0, 0], [0, 0, 0.51, 1, 0.67, 0, 0, 0, 0, 0.39, 1, 0.8, 0, 0], [0, 0, 0.75, 1, 0.44, 0, 0, 0, 0, 0.36, 1, 0.81, 0, 0], [0, 0, 0.67, 1, 0.56, 0, 0, 0, 0.27, 0.96, 1, 0.81, 0, 0], [0, 0, 0.35, 1, 1, 0.67, 0.46, 0.68, 1, 0.94, 1, 0.81, 0, 0], [0, 0, 0, 0.38, 0.89, 1, 1, 0.98, 0.6, 0.1, 1, 0.81, 0, 0], [0, 0, 0, 0, 0, 0.14, 0.22, 0, 0, 0, 0.08, 0.06, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]] grafisch ein kleines a dar.

0