QImage colorTable???

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Nadja
Beiträge: 3
Registriert: 13. August 2012 12:48

QImage colorTable???

Beitrag von Nadja »

Hallo, ich versuche gerade ein .png per QFileDialog zu öffnen. Klappt sowohl für .txt, als auch für .png! Leider bleibt mein Bild in meinem QLabel farblos, also in Graustufen. Habe jetzt nach mehrfacher Erörterung der Docu und allem was Google hergibt versucht einen ColorTable zu bilden, kriegs aber iwie nicht hin. Also mir ist irgendwie klar, dass wenn ich in meiner Schleife sage qRgb (i,i,i), dass das Bild wohl grau wird. Wie mache ich es anders? Drei Schleifen mit Variablen i, j, k für die jeweiligen RGB Werte??
Wäre super wenn jemand helfen könnte, weil ich da jetzt schon Tage vorsitze und nicht mehr weiter weiß.... :-/ ....Danke schon mal. .....ach ja.....nutze QT 4 auf Windows

void MyClass::open()
{
QString filename = QFileDialog::getOpenFileName(this,tr("Load File"),"",tr("Text Files (*.txt);;Images (*.png *.jpg)"));

if (filename != "") {
/*QFile file(filename);
if (!file.open(QIODevice::ReadOnly)) {
QMessageBox::critical(this, tr("Error"), tr("Could not open file"));
return;}

QString contents = file.readAll().constData();
ui.Textfeld -> setPlainText(contents);
file.close();}*/

QImage image(filename);
image = image.convertToFormat(QImage::Format_Indexed8); //shows the image in gray
/*image = QImage(600, 453, QImage::Format_Indexed8);*/ // shows black and white stripes (why?)

QVector<QRgb> table(256);
for(int i = 0; i < table.size(); i++)
{table = qRgb ( i,i,i );}
image.setColorTable(table);

/*QRgb i;
for ( int i=0; i<256; i++ ) //build color Table
image.setColor(i,qRgb(i,i,i));*/

//image.fill(qRgb(255,255,255));
//image.setColor( 19, qRgb(255,255,0) );
//(image.scanLine(y) + x) = 19;
/*QPixmap pixmap;
pixmap = pixmap.fromImage(image);*/

ui.Display->setPixmap(QPixmap::fromImage(image));}
}
Herzogswalder
Beiträge: 79
Registriert: 11. Oktober 2009 00:37
Wohnort: Dresden

Re: QImage colorTable???

Beitrag von Herzogswalder »

Warum erst als QImage?

Code: Alles auswählen

QPixmap::QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
Gruß, Herzogswalder
Qt 4.8, OS X Mountain Lion
Nadja
Beiträge: 3
Registriert: 13. August 2012 12:48

Re: QImage colorTable???

Beitrag von Nadja »

Hm.....gute Frage....weil ich das Bild nicht bearbeiten sondern nur schlicht anzeigen will?!?!

Hab`s jetzt mal mit :

void MyClass::open()
{
QString filename = QFileDialog::getOpenFileName(this,tr("Load File"),"",tr("Text Files (*.txt);;Images (*.png *.jpg)"));

if (filename != "") {
QPixmap pixmap(filename);
pixmap = QPixmap(filename, 0, Qt::AutoColor);
ui.Display->setPixmap(pixmap);}
}

versucht.....zeigt mir auch ein farbloses Bild an........versteh bald nix mehr......die Doku macht mich auch immer nur noch wirscher :-( .......hilfe???
Herzogswalder
Beiträge: 79
Registriert: 11. Oktober 2009 00:37
Wohnort: Dresden

Re: QImage colorTable???

Beitrag von Herzogswalder »

Wozu denn diese Zeile:

Code: Alles auswählen

pixmap = QPixmap(filename, 0, Qt::AutoColor);
Du hast es doch schon mit

Code: Alles auswählen

QPixmap pixmap(filename);
Ich würde mich an deiner Stelle doch mal etwas eingehender mit den Grundlagen & der Dokumentation beschäftigen.
Gruß, Herzogswalder
Qt 4.8, OS X Mountain Lion
Nadja
Beiträge: 3
Registriert: 13. August 2012 12:48

Re: QImage colorTable???

Beitrag von Nadja »

wie bereits erwähnt, hatte ich genau das bereits getan. Ich kanns mir ja noch ein 20zigstes mal durchlesen und komm immer noch nicht weiter. Ich verstehe wirklich nicht warum man nicht einfach helfen kann, dachte dafür wären Foren da, auch wenn es mal mehr und mal weniger Wissensunterschiede gibt. Gehört doch nun mal dazu.
Gibt es hier vielleicht doch jemand der ein wenig Unterstützung geben kann???
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QImage colorTable???

Beitrag von franzf »

Du verstehst nicht was er meint:

Code: Alles auswählen

QPixmap pixmap(filename);
erzeugt schon ein pixmap-Objekt, welches das Bild in der Datei "filename" enthält. Die nächste Zeile ersetzt das aktuelle pixmap-Objekt durch ein weiteres, welches exakt die selben Daten enthält! Diese Herangehensweise sagt uns, dass du noch nicht so wirklich viel Erfahrung hast (ist nicht böse gemeint!).

Was bei dir genau schief geht, kann man mit dem wenigen Code nicht sagen. Kannst du dein gesamtes Projekt (bitte ohne binaries/libs/... sondern NUR die Sourcen, .pro-file, resourcen) in ein .zip packen und über die Forenfunktion "Dateianhang hochladen" hier anhängen? Am besten legst du noch das Bild bei, das bei dir gerade Probleme bereitet.
Antworten