Seite 1 von 1

[gelöst] indiziertes PNG Bild speichern

Verfasst: 21. Mai 2009 22:31
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

Verfasst: 21. Mai 2009 22:42
von upsala
Ich würde mal versuchen ein passendes QImage zu speichern.

Verfasst: 22. Mai 2009 08:27
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.

Verfasst: 22. Mai 2009 13:49
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?

Verfasst: 22. Mai 2009 14:25
von franzf
Weil QImage::convertToFormat() nicht das Objekt verändert sondern eine Kopie zurückliefert!

Verfasst: 22. Mai 2009 19:55
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