Forum: Compiler & IDEs BMP Datei in C anzeigen.


von Karl der Käfer (Gast)


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


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)


Lesenswert?

Ganz vielen lieben Dank für die Hilfe!  :-)

von foobar (Gast)


Lesenswert?

Einfacher wäre wohl, von deinem Programm aus einen externen Image-Viewer 
(wie "display", "gliv", ...) zu starten:
1
static void
2
display_image(const char *filename)
3
{
4
    if (strlen(filename) < 200 && strchr(filename, '\'') == 0)
5
    {
6
        char buf[256];
7
        int res;
8
9
        // call external image viewer, here ImageMagick's "display"
10
        sprintf(buf, "exec display '%s'", filename);
11
        res = system(buf);
12
        if (res)
13
            fprintf(stderr, "image viewer failed with error %d\n", res);
14
    }
15
    else
16
        fprintf(stderr, "invalid filename '%s'\n", filename);
17
}
18
19
    ....
20
    write_bmp("foo.bmp");
21
    ...
22
    display_image("foo.bmp");
23
    ...

von Rolf M. (rmagnus)


Lesenswert?

Schau dir mal SDL an. Damit ist das auch recht einfach möglich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.