2-D Matrix in eine Bilddatei umwandeln
-
Ich habe bis jetzt keinerlei Erfahrung mit "Grafikprogrammierung unter C". Mein Vorhaben dürfte dennoch kaum schwer umzusetzen sein:
Man hat ein 2-D Array. (also eine Matrix)
Dies hat als Inhalt n verschiedene Werte. Wie kann ich nun die Matrix in eine
Bilddatei printen, sodass jeder Wert durch eine bestimmte Farbe dargestellt wird.Wie kann ich dies mit "gtk" am simplesten lösen. Gibt es da z.B. eine
bestimmte Fktion mit der ich eine 2-D Matrix in eine Grafik umwandeln kann oder
andere Funktionen die für das Lösen des Problems hilfreich sind?
-
Ähm, du könntest das auch mit nativen C lösen indem du dir als einfachste Variante das ganze als BMP datei abspeicherst und es dann mit einem üblichen Editor anzeigen lässt(z.B. Paint)
-
danke für den Tipp.
gibt es weitere Möglichkeiten wenn man unter Unix programmiert?
-
server84 schrieb:
Ich habe bis jetzt keinerlei Erfahrung mit "Grafikprogrammierung unter C". Mein Vorhaben dürfte dennoch kaum schwer umzusetzen sein:
Man hat ein 2-D Array. (also eine Matrix)
Dies hat als Inhalt n verschiedene Werte. Wie kann ich nun die Matrix in eine
Bilddatei printen, sodass jeder Wert durch eine bestimmte Farbe dargestellt wird.Wie kann ich dies mit "gtk" am simplesten lösen. Gibt es da z.B. eine
bestimmte Fktion mit der ich eine 2-D Matrix in eine Grafik umwandeln kann oder
andere Funktionen die für das Lösen des Problems hilfreich sind?Bevor ich jetzt die Glaskugel anwerfe, ein paar Fragen, die Du uns erläutern soltest:
1. Was für ein Format hat Deine Matrix??
2. Was meinst Du mit "eine Bilddatei printen"??
3. Soll Dein Programm diese Bilddatei umwandeln oder wie schon erwähnt ein bestehendes Programm??
4. Was willst Du genau machen??Wenn Du Bildbearbeitung machen möchtest, bist Du eigentlich mit GTK+ nicht beim schlechtesten Framework - Immerhin steht GTK für G imp T ool K it...
Vielleicht ein Tipp, zum Suchen im Netz: Stichworte wären GdK, pixpuf, XPM (Bilddarstellung als Matrix), Cairo ...
Aber wie gesagt, ohne nähere Infomationen müsste man die Glaskugel anwerfen, die ich leider noch bicht habe..

-
1. Was für ein Format hat Deine Matrix??
Ich habe ein 2 dimensionales int-Array der Größe 700x700
2. Was meinst Du mit "eine Bilddatei printen"??
Ich möchte aus den Informationen des 2dimensionalen Array eine Bilddatei erstellen, sodass verschiedene
Inhalte(verschiedene) Zahlen als verschiedene Farben ausgegeben werden.
Die Inhalte des 2D-Array stellen die einzelnen Pixel des 2 dimensionalen Bildes dar.3. Soll Dein Programm diese Bilddatei umwandeln oder wie schon erwähnt ein bestehendes Programm??
ich habe bereits ein Programm dass bestimmte Berechnungen durchführt und Ergebnisse in ein
2-dimensionales integer Array kopiert. Nun möchte ich das Ergebnis in eine sichtbare
Form bringen(zu vorführungszwecken).4. Was willst Du genau machen??
Ich möchte ein 2-dimensionales integer Array(Maße 700x700) in eine Bilddatei
umwandeln. Ich habe in diesem Array 4 verschiedene Zahlenwerte u. diese sollen auch in dem erzeugten Bild durch verschiedene Farben dargestellt werden. Jedes
Feld soll praktisch ein pixel darstellen.
Angenommen alle "1en" in "rot", "2en" in "gelb" usw.
Dass ganze möchte ich unter Unix ausprobieren u. auch so simpel wie möglich.falls weiterhin was unklar ist bitte fragen

-
Naja ich kenne mich unter UNIX nichts aus aber:
-Such dir ein Bildformat aus...am besten ein "raw" Format (BMP bei Windows) dann kannst du auch eher nachvollziehen was du dort machst
oder
-Nimm die ne JPEG Bibliothek und speicher es als JPEG ab.
http://www.ijg.org/
-
server84 schrieb:
Ich habe bis jetzt keinerlei Erfahrung mit "Grafikprogrammierung unter C". Mein Vorhaben dürfte dennoch kaum schwer umzusetzen sein:
Das war Dein Eingangssatz zu Deinem Thread. Ich habe mir jetzt lange überlegt, ob ich nochmal antworten soll...
server84 schrieb:
Man hat ein 2-D Array. (also eine Matrix)
Dies hat als Inhalt n verschiedene Werte. Wie kann ich nun die Matrix in eine
Bilddatei printen, sodass jeder Wert durch eine bestimmte Farbe dargestellt wird.Ich vermute - und da kommt die Glaskugel ins Spiel - Du hast ein paar Werte in einer x,y Anordnung oder wie auch immer, die Du graphisch darstellen willst????
server84 schrieb:
Wie kann ich dies mit "gtk" am simplesten lösen. Gibt es da z.B. eine
bestimmte Fktion mit der ich eine 2-D Matrix in eine Grafik umwandeln kann oder
andere Funktionen die für das Lösen des Problems hilfreich sind?Ok, Funktion - wieder Glaskugel - da gibt es natürlich tolle Frameworks, die eine Funktion aus x,y Werten als graphische Darstellung anzeigen.
Generell wirst Du eine Matrix aus Werten nicht als Bild darstellen können, sondern musst diese berechnen und dann - sagen wir plotten... nicht printen. Dazu gibt es im Netz 100e von Anleitungen und auch Onlinetools - z.B.
http://www.redio.info/werkzeuge/funktionszeichner.html
So etwas umzusetzen ist nicht ganz trivial...
Wenn das nicht das ist, was Du suchst - erkläre es uns bitte etwas besser..
greez
-
*Glaskugelmodus:An*
Naja im Grunde ist es doch ganz einfach was er will. Er hat ne 2D Matrix und will das jeder Wert einer Farbe in einem Pixel eines Bildes entspricht.
z.B kann man dann einfach wenn man eine Matrix mit 0 und 1 hat die 0 als weißen und die 1 als schwarzen Pixel darstellen. Damit kann man Populationen etc darstellen.
Ich habe interessehalber das mal selber gemacht. Der Code ist sehr einfach, benutzt jedoch die .NET Bibliothek:
http://www.vivid-abstractions.net/programming/715/
-
... dass er sowas meint:
-
@Patrickssj6 : Danke für deinen Hinweis. Auch wenn es nicht in C ist, so hast du mich doch wenigstens verstanden

@abcdefg : Ich bin dir sehr dankbar, dass du mir helfen willst.
Aber nun bin ich ECHT verzweifelt und weiß wirklich nicht was ich NOCH zu dem Problem sagen muss!
Ich habe doch alles so genau und einfach wie möglich geschildert
Ich habe ein 2D-Array, aus welchem ich ein Bild kreieren möchte. Das 2D-Array besteth aus verschiedenen Zahlenwerten. Und jedes dieser Zahlenwerte soll im Bild eine andere Farbe haben.
Ich möchte keine Funktion plotten. Mit Funktion meinte ich eine Programmfunktion,
eine API etc.
Ich möchte einfach aus den Informationenen des 2dimensionalen Arrays ein Bild erstellen.Ich merke gerade, dass ich mich nur wiederhole u. alles hierzu schon gesagt ist.
-
Hi, falls es noch interessiert: mit Qt kannst du ein einfaches QWidget erstellen, in das du im paintEvent ungefähr folgenden Code einsetzt:
void Widget::paintEvent(QPaintEvent *event) { QPainter painter; painter.begin(this); for (int y=0; y<xSize; y++) { for (int x=0; x<ySize; x++) { int c = valueArr[x][y]; painter.setPen(colorArr[c]); painter.drawPoint(x, y); } } painter.end(); }wobei valueArr dein 2D-int-Array ist und colorArr die Farben zu den zugehörigen Werten enthält. xSize und ySize sind jeweils die Anzahl der Spalten bzw. Zeilen.