Bild durch Pixelangabe erzeugen



  • Vor kurzem habe ich auch sowas gebraucht, da ich 16x16 Array mit Grauwerten hatte. Nachdem mir der Aufwand mit gnuplot dafür zu groß war (http://gnuplot.sourceforge.net/demo/image.html) habe ich das geschwind in ein paar Zeilen und Minuten mit C# realisiert. Das http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx + SetPixel und Save ist alles was du brauchst. Ne bestehende Software habe ich dazu leider nicht gefunden.



  • KasF schrieb:

    Vor kurzem habe ich auch sowas gebraucht, da ich 16x16 Array mit Grauwerten hatte. Nachdem mir der Aufwand mit gnuplot dafür zu groß war (http://gnuplot.sourceforge.net/demo/image.html) habe ich das geschwind in ein paar Zeilen und Minuten mit C# realisiert. Das http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx + SetPixel und Save ist alles was du brauchst. Ne bestehende Software habe ich dazu leider nicht gefunden.

    Danke dafür, allerdings möchte ich nicht so wirklich etwas mit C# zu tun haben 😞

    Hätte vielleicht anfügen sollen das ich ausschleisslich mit C++ arbeite, Sorry.



  • Wieso nicht? Du willst doch ein Problem lösen, also nimmst das, womit du es schnell und effektiv lösen kannst.

    Du kannst dich natürlich in C++ erstmal nach einer Bibliothek umschauen und dich tot-frickeln oder einfach geschwind diese 10 Zeilen in C# runtertippen. Gut gemeinter Tipp: Versteif dich nicht zu sehr auf C++. Ich liebe zwar auch diese Sprache, aber es gibt auch Alternativen, die dir ein bestimmtes Problem effizienter lösen.



  • Ich habe nen alten und unfertigen Loader für Targa Dateien, funktioniert aber mit "normalen" targas. Ist in C++ geschrieben. Hilft der dir?



  • cooky451 schrieb:

    Ich habe nen alten und unfertigen Loader für Targa Dateien, funktioniert aber mit "normalen" targas. Ist in C++ geschrieben. Hilft der dir?

    Wenn dein Loader auch Targa's schreibt sehr gerne! :xmas2: (Ist ja wie Weihnachten :xmas1: )

    Übrigens, ich mag die scheiß Smileys :xmas1: :xmas1: :xmas2: :xmas2:



  • Argh.. der ist gerade etwas integriert in ein anderes Projekt, aber ich poste mal die für dich relevanten Teile:

    struct TargaColorMapSpec
      {
        uint16_t entry_index;
        uint16_t color_map_length;
        uint8_t color_map_entry_size;
      };
      struct TargaImangeSpec
      {
        uint16_t x_origin;
        uint16_t y_origin;
        uint16_t width;
        uint16_t height;
        uint8_t pixel_depth;
        uint8_t image_descriptor;
      };
      struct TargaHeader
      {
        uint8_t id_length;
        uint8_t color_map_type;
        uint8_t image_type;
        TargaColorMapSpec color_spec;
        TargaImangeSpec image_spec;
      };
    
      // Datei öffnen / Einlesen
    
      TargaHeader header;
      reader.read(header.id_length);
      reader.read(header.color_map_type);
      reader.read(header.image_type);
      reader.read(header.color_spec.entry_index);
      reader.read(header.color_spec.color_map_length);
      reader.read(header.color_spec.color_map_entry_size);
      reader.read(header.image_spec.x_origin);
      reader.read(header.image_spec.y_origin);
      reader.read(header.image_spec.width);
      reader.read(header.image_spec.height);
      reader.read(header.image_spec.pixel_depth);
      reader.read(header.image_spec.image_descriptor);
    
      // Ab jetzt (width * height * pixel_depth / 8) byte einlesen, das sind deine Pixel.
    

    Schreiben solltest du mit etwas umbauen auch können.



  • Danke Digga :xmas2:



  • Kóyaánasqatsi schrieb:

    Ideal wäre, wenn ich die Pixeldaten + Pixel itself (egal welche Formatierung) in eine einfache Textdatei schreiben könnte und dieses Textfile angezeigt werden kann.

    ppm-Format





  • ppm

    Danke!


Anmelden zum Antworten