Probleme mit .asRGB Funktion (Python png-Modul)

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.
Python1906
User
Beiträge: 29
Registriert: Mittwoch 9. November 2016, 13:52

Hm vielleicht liegt es ja daran. Denn ich habe mir pypng aus pip installiert
Python1906
User
Beiträge: 29
Registriert: Mittwoch 9. November 2016, 13:52

Ach jetzt habe ich den Fehler selbst gefunden, denn vor der .asRGB()-Funktion habe ich die Chunk-Funktion verwendet. Nun habe ich sie entfernt und es funktioniert.

:) Danke an ALLE, die mir hierbei unterstützt haben.


Jedoch habe ich gemerkt, dass ich mit dem eigentlichen Sinn und Zweck nicht weiterkomme.
Weil ich dachte, dass die asRGB-Funktion mir die Pixel in RGB-Code umsetzt.
Also zum Beispiel ganz rotes Pixel als 255, 0, 0 ausgibt.

Weiß jemand von euch welche Funktion ich dafür verwenden kann
BlackJack

@Python1906: Das tut sie doch auch. Du bekommst einen Iterator über `bytearray`-Objekte für jede Zeile wo die Bytewerte für die Pixel drin sind.
Python1906
User
Beiträge: 29
Registriert: Mittwoch 9. November 2016, 13:52

Hm, jedoch bekomme ich dann folgendes:

[codebox=pycon file=Unbenannt.txt]
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "copyright", "credits" or "license()" for more information.
>>>
RESTART: /home/julien/Schreibtisch/Programmieren/Python/Bilder/Colorchanger/changer.py
(225, 225, <itertools.imap object at 0x7f588b51c990>, {'bitdepth': 8, 'text': {}, 'last_mod_time': (2017, 5, 25, 18, 28, 33), 'interlace': 0, 'planes': 3, 'greyscale': False, 'alpha': False, 'resolution': ((2835, 2835), 1), 'size': (225, 225)})
>>>
[/code]

Muss ich einen bestimmten weiteren Befehl anwenden?
BlackJack

@Python1906: Du bekommst ein Tupel mit Breite, Höhe, einem Iterator über die Zeilen und einem Wörterbuch mit Metainformationen. Über den Iterator musst Du iterieren um an die Pixel zu kommen. Pro Pixelzeile im Bild liefert der ein `bytearray`-Objekt mit drei Bytes pro Pixel.

Code: Alles auswählen

In [8]: reader = png.Reader('png.png')

In [9]: width, height, rows, info = reader.asRGB()

In [10]: rows
Out[10]: <itertools.imap at 0xa7216ac>

In [11]: row = next(rows)

In [12]: len(row)
Out[12]: 675

In [13]: width
Out[13]: 225

In [14]: len(row) / 3
Out[14]: 225

In [15]: row[:12]
Out[15]: bytearray(b'\xfe\xfb\xfb\xfe\xfb\xfb\xfe\xfb\xfb\xfe\xfb\xfb')

In [16]: row[0], row[1], row[2]
Out[16]: (254, 251, 251)
Was willst Du mit den Daten eigentlich machen und was ist der Grund für pypng im Gegensatz zu beispielseise der Python Imaging Library (PIL) oder Pillow und Numpy?
Python1906
User
Beiträge: 29
Registriert: Mittwoch 9. November 2016, 13:52

Ich möchte ein sogenannten einstieg darin versuchen. Bei den anderen Libraries, wie PIL, habe ich noch nichts von gehört, weswegen ich mit Pypng starten wollte.

Danke nochmal für den Beispielcode
Python1906
User
Beiträge: 29
Registriert: Mittwoch 9. November 2016, 13:52

Somit wollte ich anfangen ein Bild zu lesen und die Farben zu verändern
Antworten