Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
wie der Titel schon sagt möchte ich Bilddateien Pixel für Pixel den Farbwert auslesen, den wert in einen 16bit Farbwert umwandeln und dann an einen String anhängen. Als Beispiel sollte eine Datei 2x1 Pixel und in Weiß dann diesen String ergeben: "2x1|FFFFFFFF"
Ich hab jetzt schon python 2.7 und PIL installiert weil ich mit Google etwas gefunden habe dass das Pixel für Pixel auslesen in etwas so gehen soll
Ich brauche so ein Skript weil ich für meinen Taschenrechner ein Pokemon Spiel machen will und die Bilder dafür muss ich eben so umwandeln. Deshalb möchte ich mich eigentlich nicht so lange mit der Entwicklung von dem Konverter aufhalten.
Technik ist: wenn alles funktioniert und keiner weiß warum. Wer Rechtschreibfehler findet darf sie behalten.
Py-Prog hat geschrieben:Ich hab jetzt schon python 2.7 und PIL installiert weil ich mit Google etwas gefunden habe dass das Pixel für Pixel auslesen in etwas so gehen soll
Ich nehme mal an, dass du dir bereits Gedanken über die Umsetzung gemacht hast und entsprechend vorbereitet bist. Wenn nicht, dann brechen wir hier direkt ab und du kommst wieder wenn es so weit ist.
OK, du liest weiter, dann bist du ja gut gerüstet. Du hast der Pygame-Dokumentation ja entnommen, dass der Rückgabewert von load() eine Instanz von Surface ist. Wo aber glaubst du der Dokumentation von Surface entnehmen zu können, dass du auf diese Art Werte zuweisen kannst? Und noch schlimmer: Warum versuchst du etwas zuzuweisen wenn du es doch eigentlich auslesen willst?
Ich will keine Wert einem Pixel zuweißen, sonder nur auslesen. Das Bild wie es der Lua-Interpreter braucht besteht nur aus einem String. (link)
Ich hab jetzt auch herrausgefunden wie ich den Farbwert auslesen kann:
@Py-Prog: Naja wohl eher nicht. Die Bitverteilung stimmt nicht, du hast statt rgb-Pixeln mit 5-6-5 Bits die von der API erwartet werden rggb-Pixel mit 4-8-8-4 Bits wobei die beiden identischen Grünanteile tatsächlich nur die unteren vier Bits benutzen. Das ist Murks.
Ich kapier nicht wie das gehen soll, sin 5-6-5 Farbwert würde für mich heißen das von 1111111111111111 die ersten 5 bit 11111 rot sind, die nächsten 6 111111 grün und die letzen 5 11111 blau, aber wenn ich das so mache bekomme ich doch nicht den Hex wert FFFF.
Technik ist: wenn alles funktioniert und keiner weiß warum. Wer Rechtschreibfehler findet darf sie behalten.
import Image
im = Image.open(pfad)
im.load()
print im.size
pic = ''
for y in range(im.size[1]):
for x in range(im.size[0]):
r = bin(int((im.getpixel((x,y))[0] / 8)+0.5))[2:]
g = bin(int((im.getpixel((x,y))[1] / 4)+0.5))[2:]
b = bin(int((im.getpixel((x,y))[2] / 8)+0.5))[2:]
r = '0'*(5-len(r)) + r
g = '0'*(6-len(g)) + g
b = '0'*(5-len(b)) + b
hex_ = hex(int(r+g+b, 2))[2:].upper()
pic += '0'*(4-len(hex_)) + hex_
print pic
Danke für die Hilfe!
Technik ist: wenn alles funktioniert und keiner weiß warum. Wer Rechtschreibfehler findet darf sie behalten.