Seite 1 von 1

QImage PGM

Verfasst: 15. Juli 2009 18:37
von atzo
Hallo zusammen,

bin neu im Forum und auch ziemlicher Qt-Anfänger.
Habe gerade folgendes Problem:

Ich lade mir ein QImage aus einem File Dialog:

Code: Alles auswählen

QImage image1;
QString imageFile1;

imageFile1 = QFileDialog::getOpenFileName(this, tr("Open File"), QDir::currentPath());

image1.load(imageFile1);
Angenommen, ich lade hiermit ein JPEG-File, dann möchte ich ein zweites QImage das eine Kopie des geladenen Bildes ist, aber als PGM.
Hab das mit

Code: Alles auswählen

QImage image2;
image2 = image1.convertToFormat(...);
versucht, aber das hat mir nicht wirklich weiter geholfen.
Mit

Code: Alles auswählen

image1.save("test.pgm");
wird das Bild wunderbar als PGM-File gespeichert, aber ich will das Bild ja als QImage weiterverwenden.

Bitte um Hilfe :)

Gruß
Matthias

Verfasst: 15. Juli 2009 19:15
von NothingSpecial
Hi,

sobald du ein Bild geladen hast liegt es im Speicher in Pixeldaten vor und nicht als jpeg, gif oder einem anderen Datei- Format. Deshalb klappt das Konvertieren (covertToFormat convertiert zwischen Bittiefen und deren Codierung) auch nicht, wie du willst. Wenn du ein farbiges Bild in ein graues umcodieren willst, musst du das, glaube ich, selber machen. Bei dem Format-enum ist soweit ich das sehe kein Graustufenbild gelistet.
Wenn du das aber machst schau nach wie es geht, denn Grün, Blau und Rot sind im Graustufenbild nicht gleichwertig. (Grün ist heller als Rot und Blau, Rot heller als Blau)

Grüße,

NothingSpecial

P.S.: Solltest du wirklich zu einem Graubild umrechnen wollen schau hier nach wie "Y" berechnet wird, welcher den grauen Kanal darstellt:
http://de.wikipedia.org/wiki/YCbCr-Farbmodell
Wenn du mit Matrizen nicht zurecht kommst, frag einfach ;)

Verfasst: 16. Juli 2009 08:56
von RavenIV
Für Graubilder soll / kann / muss man dies verwenden:
QImage::Format_Indexed8 3 The image is stored using 8-bit indexes into a colormap.

Verfasst: 22. Juli 2009 13:10
von atzo
Danke euch!

Habs gelöst wie ich mir zunächst gedacht hatte.
Das jpg als pgm speichern und den Pfadname in einen QString packen.
Dann mit QSting.toAcsii().data() zugegriffen.

Reicht mir soweit ...

Aver vielen Dank für die Antworten