Seite 2 von 2
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 10:37
von Leonidas
Pittan hat geschrieben:Dementsprechend habe ich wenig Lust unmengen an Energie zu verschwenden dieses kac* PIL, PILLOW, Inkscape oder sonstwas fuer einen Mist zu lernen.
Dann mach es per Hand und vergleiche den Aufwand.

Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 10:38
von Pittan
Und dann habe ich immer noch das Problem, dass ich keine Variablen in PIL auf das Bild pinseln kann...
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 10:52
von BlackJack
@Pittan: Okay, das mit den Bildchen ist Dir nicht sooo wichtig, aber wenn wir uns mal erinnern sind wir an diesem Punkt angelangt weil Dir mit `matplotlib` der Rand ein bisschen zu gross war. Ernsthaft!?
Hier geht es IMHO auch nicht um möglichst schön, und auch gar nicht über den Programmierstil selbst, sondern das Pixelgrafik für diese Aufgabe eine sehr hässliche Lösung ist. Das hat etwas von Alufolie statt einer Sicherung zu verwenden oder eine Schraube mit einem Hammer einzuschlagen. Klar kann man machen… Funktioniert auch.
Irgendwelchen ”Mist” musst Du ja lernen, ansonsten kannst Du es auch einfach manuell mit MS Paint machen. Wenn Du es aber per selbstgeschriebenem Programm machen möchtest, dann musst Du Dich in irgend etwas einarbeiten. Zum einfachen Bearbeiten von Pixelgrafik ist PIL/Pillow das wohl am meisten verbreitete Python-Package. Es ist weniger umfangreich und hat eine einfachere API als `matplotlib` würde ich jetzt mal behaupten.
Bezüglich der Variablen: Lies meinen Beitrag noch mal. Vielleicht mit eingeschaltetem Ironiedetektor.

Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 11:01
von /me
Pittan hat geschrieben:Und dann habe ich immer noch das Problem, dass ich keine Variablen in PIL auf das Bild pinseln kann...
Doch, das kannst du natürlich. Die folgenden beiden Codebeispiele führen zum gleichen Ergebnis.
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 12:17
von Pittan
BlackJack hat geschrieben:
Bezüglich der Variablen: Lies meinen Beitrag noch mal. Vielleicht mit eingeschaltetem Ironiedetektor.

Sorry - ich verstehe es einfach nicht.
Wie soll es jetzt möglich sein, den Inhalt einer Variablen mittels PIL auf eine Grafik zu pinseln?
Kann man nun dazu ImageDraw.text verwenden oder nicht?
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 12:44
von BlackJack
@Pittan: Natürlich ist das möglich. Wieso sollte das nicht möglich sein? Wie dämlich wäre denn eine API mit der man nur literale Zeichenketten verwenden kann? Die Vorstellung ist absurd. Zumal Python einer Funktionsimplementation ja gar nicht die Möglichkeit gibt, herauszufinden wie ein übergebenes Argument mal zustande gekommen ist. Da müsste man schon auf „deep magic” zurückgreifen. Und selbst dann wüsste ich nicht *warum* man so etwas tun sollte und noch weniger warum man eine API derartig einschränken wollen würde.
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 14:23
von Pittan
Hallo Blackjack,
ich gebe dir recht, die Frage
ob das möglich ist, ist hinfällig. Meine nun mittlerweile 2-Monatige Python-Expertise (und vorher habe ich noch nie programmiert) zeigt mir, dass prinzipiell alles möglich ist.
Die Frage ist nur, wie das möglich ist
Code: Alles auswählen
import Trinkwassererwaermung as TWW
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
####### DARTSTELLUNG TRINKWARMWASSER##########
img=Image.open("Trinkwassererwaermung.png")
draw=ImageDraw.Draw(img)
font=ImageFont.truetype(font="ARIALUNI.TTF", size=11, index=0)
draw.text((655, 255), TWW.q_TW, (0,0,0), font=font)
In der Variable TWW.q_TW ist der Wert gespeichert, den ich auf meinem Bild stehen haben möchte.
Folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Users\pittan\workspace\Norm\DIN4701\img.py", line 11, in <module>
draw.text((655, 255), TWW.q_TW, (0,0,0), font=font)
File "C:\Python27\lib\site-packages\PIL\ImageDraw.py", line 266, in text
mask, offset = font.getmask2(text, self.fontmode)
File "C:\Python27\lib\site-packages\PIL\ImageFont.py", line 152, in getmask2
size, offset = self.font.getsize(text)
TypeError: expected string
Fehlt also ein string?! Wie soll ich also weiter machen?
Danke schonmal im voraus.
google hat mir bislang auch nicht weitergeholfen. Wahrscheinlich suche ich nach den falschen Sachen.
Gruß
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 14:58
von Sirius3
@Pittan: das Stichwort ist String-Formatierung und sollte in jedem Anfängertutorial ziemlich am Anfang vorkommen. Je nachdem wie Du die Ausgabe wünschst, mußt Du die Zahl in einen String umwandeln. Z.B:
Code: Alles auswählen
draw.text((655, 255), '{0:.3f}'.format(TWW.q_TW), (0,0,0), font=font)
Re: imread und figsave - Probleme mit der Auflösung
Verfasst: Dienstag 26. August 2014, 15:30
von Pittan
Hallo,
vielen Dank, das hat mir wirklich sehr sehr weiter geholfen!
EDIT:
ich weiß, ich habe mich hier in diesem Forum bislang nicht mit Ruhm bekleckert - daher ziehe ich die letzte Frage zurück.
Trotzdem allen vielen Dank!
Danke
Gruß