B
Bgag
Hallo.
Ich beschaeftige mich momentan etwas mit C (nicht C++ oder C#) und moechte nun eine Bilddatei in eine Matrix einlesen. Am einfachsten waere das natuerlich mit Bitmaps, jedoch kann ich diesem Format einfach nichts abgewinnen. Zuerst hatte ich daher ueberlegt mit *.jpg Dateien zu arbeiten, aber das Encodieren und Decodieren von solchen Dateien ist mir einfach zu stressig. Die Grundlagen dazu habe ich zwar verstanden (Huffman-Code, Farbwertberechnung, etc.), aber ich wollte mich auf andere Aspekte konzentrieren.
Ich habe mich also entschieden mit *.png Dateien zu arbeiten, da diese nach meinem Wissen relativ einfach gespeichert werden. Leider habe ich bisher keine brauchbaren Codebeispiele oder Format Spezifikationen gefunden. Daher wuerde mich interessieren, ob sich einer vonb euch bereits mit diesem Thema befasst hat und mir daher bei meinem Vorhaben unterstuetzen kann.
Speziell moechte ich eine *.png Datei auslesen und in einen m*n Vektor schreiben, der als Elemente pixel-Strukturen enthaelt, die nichts anderes halten als die RGB-Farbwerte des jeweiligen Pixels. Das komplette Bild soll dann von einer image Struktur repraesentiert werden, die neben der Matrix alle Headerdaten enthaelt. Dadurch soll es mir moeglich sein verschiedene Algorithmen zur Bildmanipulation zu implementieren. Natuerlich muss es mir dann auch moeglich sein das Resultat meiner Aenderungen in eine neue oder die selbe Datei (je nach Aufrufparametern) zu speichern. Am Ende soll ein kleines Program herauskommen, das dann zum Beispiel so aufgerufen werden kann.
Das sind natuerlich nur einige Beispiele, aber so soll es im Endeffekt funktionieren. Hat jemand eine Idee, ein Beispiel oder eine Specification, die erklaert, wie ich eine *.png Datei in eine wie oben beschriebene Matrix einlese und wieder in eine Bilddatei ausgebe? Vielen Dank schonmal fuer eure Hilfe.
MfG, Andy
Ich beschaeftige mich momentan etwas mit C (nicht C++ oder C#) und moechte nun eine Bilddatei in eine Matrix einlesen. Am einfachsten waere das natuerlich mit Bitmaps, jedoch kann ich diesem Format einfach nichts abgewinnen. Zuerst hatte ich daher ueberlegt mit *.jpg Dateien zu arbeiten, aber das Encodieren und Decodieren von solchen Dateien ist mir einfach zu stressig. Die Grundlagen dazu habe ich zwar verstanden (Huffman-Code, Farbwertberechnung, etc.), aber ich wollte mich auf andere Aspekte konzentrieren.
Ich habe mich also entschieden mit *.png Dateien zu arbeiten, da diese nach meinem Wissen relativ einfach gespeichert werden. Leider habe ich bisher keine brauchbaren Codebeispiele oder Format Spezifikationen gefunden. Daher wuerde mich interessieren, ob sich einer vonb euch bereits mit diesem Thema befasst hat und mir daher bei meinem Vorhaben unterstuetzen kann.
Speziell moechte ich eine *.png Datei auslesen und in einen m*n Vektor schreiben, der als Elemente pixel-Strukturen enthaelt, die nichts anderes halten als die RGB-Farbwerte des jeweiligen Pixels. Das komplette Bild soll dann von einer image Struktur repraesentiert werden, die neben der Matrix alle Headerdaten enthaelt. Dadurch soll es mir moeglich sein verschiedene Algorithmen zur Bildmanipulation zu implementieren. Natuerlich muss es mir dann auch moeglich sein das Resultat meiner Aenderungen in eine neue oder die selbe Datei (je nach Aufrufparametern) zu speichern. Am Ende soll ein kleines Program herauskommen, das dann zum Beispiel so aufgerufen werden kann.
Code:
imtrans bild.png /* laed und speichert bild in selbe datei ohne aenderungen */
imtrans bild.png ziel.png /* speichert es bild ohne aenderungen in neue datei */
imtrans -inverse bild.png ziel.png /* invertiert bild und speichert es in ziel.png */
imtrans -rotate 90 bild.png ziel.png /* dreht bild um 90 grad und speichert es in ziel.png */
Das sind natuerlich nur einige Beispiele, aber so soll es im Endeffekt funktionieren. Hat jemand eine Idee, ein Beispiel oder eine Specification, die erklaert, wie ich eine *.png Datei in eine wie oben beschriebene Matrix einlese und wieder in eine Bilddatei ausgebe? Vielen Dank schonmal fuer eure Hilfe.
MfG, Andy