[gelöst] indiziertes PNG Bild speichern

Alles rund um die Programmierung mit Qt
Antworten
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

[gelöst] indiziertes PNG Bild speichern

Beitrag von tYREL »

Hallo zusammen :D ,

ich bin gerade auf ein größeres Problem gestoßen. Über pixmap->save
speichere ich ein Bild ab.

Code: Alles auswählen

pixmap -> save(QString::fromStdString(lMovieDatabase.moviePNG), "PNG");
Problem, das PNG wird in einem andren Programm wieder eingelesen, welches aber leider nur indizierte PNGs darstellen kann. Kann ich Qt irgendwie dazubewegen, das Bild entsprechend zu speichern :roll: .
Default ist sowie ich das sehe RGB.

Danke+Grüße
tYREL
Zuletzt geändert von tYREL am 22. Mai 2009 19:55, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ich würde mal versuchen ein passendes QImage zu speichern.
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag von tYREL »

Danke. Hab mir mal die Klasse angesehen. Scheint die Funktionen zu haben welche ich brauche. Könnte also klappen :wink: .
Danke für den Tipp.
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag von tYREL »

Brauche nun doch etwas hilfe. Bekomme es nicht hin.
Ich möchte ein JPG Bild laden und als 256 Farben PNG wieder abspeichern.
Nach dem Tipp von upsala habe ich folgendes gebastelt.

Code: Alles auswählen

int QtTab::makePNG()
{
	QImage *pixmap;
	pixmap = new QImage ("bild1.jpg");
	if(pixmap->isNull())
		return -1;

	//pixmap->setNumColors ( 256 );
	pixmap->convertToFormat ( QImage::Format_Indexed8, Qt::AutoColor );
	if (pixmap -> save("bild2.png", "PNG") == 0) 
	{
		qDebug("Fehler beim Speichern des PNG Bildes.");
	}
	return 0;
} 
Es wird aber immer noch ein 16,8 Mio Farben Bild gespeichert. Was muß ich anders machen?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Weil QImage::convertToFormat() nicht das Objekt verändert sondern eine Kopie zurückliefert!
tYREL
Beiträge: 43
Registriert: 8. Februar 2009 10:11

Beitrag von tYREL »

Hallo,

stimmt, hab ich net ordenlich genug gelesen :wink:
Hier der funktionierende Code um aus einem JPG Bild ein 256 Farben PNG Bildchen zu machen.

Code: Alles auswählen

	QImage jpegPic( QString::fromStdString(jpegFileName) );
	QImage pngPic = jpegPic.convertToFormat(QImage::Format_Indexed8); 
	if (pngPic.save(QString::fromStdString(pngFileName), "PNG") == 0) 
	{
		qDebug("Fehler beim Speichern des PNG Bildes.");
	}
Grüße
tYREL
Antworten