mikrocontroller.net

Forum: Compiler & IDEs BMP Datei in C anzeigen.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Karl der Käfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute, ich habe einen Laptop, auf dem ist Linux Mint. Ich habe 
jetzt ein bisschen herumgefummelt und ein C Programm geschrieben, das 
mehrere BMP Dateien einliest und dann eine neue BMP Datei schreibt. Ich 
benutze den Editor Kate, speicher mit Strg s ab, geh in das 
Konsolen-Fenster, starte den gcc. Hurra keine Fehlermeldung. Dann starte 
ich das erzeugte Programm. Es macht ein bisschen Textausgabe auf dem 
Konsolen-Fenster und schreibt direkt eine BMP Datei auf die Festplatte. 
Und dann wechsel ich wieder das Fenster. Und dann klicke ich die 
erzeugte BMP Datei an und schau mir an was passiert ist.

Meine Frage, wie kann ich in C direkt Grafik auf den Bildschirm bringen?

von Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Eine relativ einfache Moeglichkeit waere direkt in den Linux Framebuffer 
zu schreiben.

Dieser Code hier kompiliert problemlos und funktioniert auch:

https://gist.github.com/FredEckert/3425429

Ist jetzt nicht die eleganteste Methode aber dafuer relativ simpel, 
zumal du die Daten eh schon in einem brauchbaren Format vorliegen hast.

Wenn du allerdings eher etwas highlevel maessiges moechtest kannst du 
z.B. auch auf SDL zurueckgreifen:

https://de.wikipedia.org/wiki/Simple_DirectMedia_Layer

Und wenn du eine ganze GUI moechtest, dann ist z.B. Qt eine 
Moeglichkeit.

Eine Uebersicht findest du hier:

https://de.wikipedia.org/wiki/Liste_von_GUI-Bibliotheken

: Bearbeitet durch User
von Karl der Käfer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ganz vielen lieben Dank für die Hilfe!  :-)

von foobar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Einfacher wäre wohl, von deinem Programm aus einen externen Image-Viewer 
(wie "display", "gliv", ...) zu starten:
static void
display_image(const char *filename)
{
    if (strlen(filename) < 200 && strchr(filename, '\'') == 0)
    {
        char buf[256];
        int res;

        // call external image viewer, here ImageMagick's "display"
        sprintf(buf, "exec display '%s'", filename);
        res = system(buf);
        if (res)
            fprintf(stderr, "image viewer failed with error %d\n", res);
    }
    else
        fprintf(stderr, "invalid filename '%s'\n", filename);
}

    ....
    write_bmp("foo.bmp");
    ...
    display_image("foo.bmp");
    ...

von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal SDL an. Damit ist das auch recht einfach möglich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.