GdkPixbuf



  • hi,

    ich versuche gerade eine PixBuf aus daten zu erzeugen ( Gdk::Pixbuf::create_from_data ). Allerdings will das nicht so wie ich will. Ich hab eine PNG-Datei im Hexeditor geöffnen und als guint8-array gespeichert. Die Pixbuf erzeuge ich jetzt so:

    image.set( Gdk::Pixbuf::create_from_data( bild, Gdk::COLORSPACE_RGB, true, 8, 48, 48, 1 ) );
    

    wobei bild das array mit den daten der png-datei ist. ich versteh den letzten parameter auch nicht. er nennt sich rowstride - wie bestimmt ich den? ich hab schon ziehmlich viele werte ausprobiert.

    kann mir da jemand helfen?

    danke!



  • GdkPixbuf erwartet Rohdaten.

    Das was du übergibst könnte jedoch komprimiert sein. Außerdem ist noch der png-header enthalten.

    Benutze doch einfach

    Gdk::Pixbuf::create_from_file(const Glib::ustring &filename)
    

    Ansonsten wird wenn ich mich recht erinnere bei Gtk ein Tool mitgeliefert, mit dem Bilddateien in ihre XPM-Repräsentation umgewandelt werden können, so dass sie in das Programm als normaler C(++)-oder eingefügt werden können.

    Ansonsten geht das auch mit Bildbearbeitungsprogrammen ala Gimp.
    Einfach als .xpm speichern, im Texteditor öffnen und weiter benutzen wie man möchte.

    Edit:
    Rowstride bezeichnet - wenn ich mich richtig erinnere - Die Länge einer Pixelzeile in Bytes.



  • hi,
    also ich hab das problem jetzt gelöst und zwar mit der Klasse PixbufLoader. Ich kenn die Methode create_from_file, allerdings will ich ein bild aus den bilddaten erstellen und nicht aus einer datei. die daten hab ich zu testzwecken mit dem hexeditor entnommen.

    trotzdem danke!


Anmelden zum Antworten