PNG struktur in String schreiben



  • Hallo zusammen,

    ich möchte mich bezüglich QRcode / PNG etwas weiterbilden und habe auch eine kleine lib für Linux gefunden hierfür: librqencode.

    Damit kann ich recht einfach mir QRcode - Barcodes erzeugen lassen. Nach kurzer Suche im Inet habe ich gleich noch den Sourcecode eines Programmes gefunden, das die lib benutzt und mithilfe libng das Ergebnis als eine PNG-Datei schreibt: http://qrencode.sourcearchive.com/documentation/3.1.1-1/qrenc_8c-source.html. ich habe mir für das Speichern die Funktion "writePNG" kopiert und für meine Tests etwas angepasst.

    Nun würde ich gerne das PNG-Bild nicht als Datei speichern, sondern das Ergebnis erst einmal in eine Zeichenkette als Buffer wegkopieren.

    Leider habe ich aktuell keine Möglichkeit gefunden dies hinzubekommen.
    Hat hier jemand eine Idee?

    Danke im voraus
    LeMacabre


  • Mod

    So wie es aussieht, wirst du dafür die Bibliothek wohl modifizieren müssen, da sie selbstständig die Datei anhand des gewünschten Namen öffnet. Dadurch kannst du der Bibliothek nicht einfach ein Proxyobjekt übergeben, welches stattdessen in einen String schreibt.

    Du schreibst, du hast es schon für deine Zwecke angepasst, daher: Was genau möchtest du überhaupt wissen?



  • erst mal danke für die Antwort.

    bis jetzt habe ich die Funktion, die ich übernommen habe so angepasst, dass man selbst angeben kann wie groß ein Punkt ist und man kann selbst definieren wie das margin außen rum ist.

    mehr hab ich nicht angepasst 🙂


  • Mod

    Was erwartest du als Antwort, außer "pass an, wie das Bild ausgegeben wird"?



  • Gut warscheinlich is meine Frage einfach blöd gestellt.

    Also in der Funktion wird ja über "png_init_io(png_ptr, fp)" die Ausgabe itialisiert.
    fp (vom Typ FILE) kann ja nur eine Datei sein oder z.B. stdout.

    Alle PNG-Funktionen wie png_set_IHDR, png_write_info, png_write_row und
    png_write_end benutzen ja die png_ptr Struktur, die mit fp initialisiert wurde.

    Nun wird (wie es aussieht) automatisch über fp ausgegeben, da keine explizite
    Funktion wie "png_write(png_structp, FILE*)" / "png_write(const char*)" gibt
    (was eigentlich für mich praktischer wäre 😉 ).

    Es gibt zwar auch eine Initialisierungsfunktion "png_init(png_ptr)", aber kann
    ich mit der auch das Bild in ein String schreiben?

    Nun hoffe ich jetzt es eher verständlich rüberzubringen: Gibt es eine
    Möglichkeit ein PNG mit png_set_IHDR, png_write_info, png_write_row und
    png_write_end zu erstellen und dieses PNG erst einmal in ein String zu halten?

    Danke im voraus.



  • In der libpng-Doku steht, wie man die Ausgabe umlenkt.


Log in to reply