Seite 1 von 1
[gelöst]QImage save() retrun false
Verfasst: 18. Februar 2011 11:09
von Sven K.
Hallo,
ich nutze die save Methode von QImage!
Code: Alles auswählen
QImage Img;
if (! Img.save(Fn, "BMP", Qt::MonoOnly))
{
...
}
(QT Version 4.5.1)
Auf meinen Rechner funktioniert es einwandfrei, wenn ich jedoch auf einem Rechner teste, wo kein QT installiert ist (QtCore451.dll und QtGui451.dll sind vorhanden), erhalte ich als return wert immer false.
Scheinbar liegt es an einer fehlenden Dll aus "..\plugins\imageformats\"!
Aber welche ? Oder kann mir jemand sagen ob ich was anderes falsch mache?
Sven
Verfasst: 18. Februar 2011 11:33
von franzf
AFAIK ist BMP ein eingebautes Image-Plugin, braucht also keine zusätzlichen DLLs.
Hat denn der User auch Schreibrechte im Verzeichnis?
Du kannst mal den Umweg über QImageWriter machen
Code: Alles auswählen
QImageWriter writer(Fn, "BMP");
if(!writer.write(image) {
qDebug() << writer.errorString() << "---" << writer.device()->errorString();
}
vllt. gibt dir das eine aussagekräftige Fehlermeldung.
Verfasst: 18. Februar 2011 13:10
von Sven K.
Code: Alles auswählen
QImageWriter writer(Fn);//, "BMP");
writer.write(Img);
ich erhalte als Fehlermeldung für writer.errorString() & writer.device()->errorString() beides mal "Unknown error"
Auf dem User System liefert QImageWriter::write auch kein false zurück, sondern legt eine .bmp datei an in der nur 54 Bytes geschrieben wurden. (sollten 900Kb sein)
Schreibrechte habe ich auf dem Userrechner, denn ein Textfile im selben Ordner kann ich schreiben.
Sven
Verfasst: 18. Februar 2011 13:38
von franzf
Wie erzeugst du das QImage? LIest du das aus einer Datei? Gibst du dem Image einen Raw-Input (Buffer)?
Könntest du vielleicht ein kompilierbares Minimlabeispiel posten, das an deinem Programmfluss angelehnt ist?
Verfasst: 18. Februar 2011 14:00
von Sven K.
ich will ein jpg File in ein 2 farbiges Bitmap umwandeln.
Code: Alles auswählen
QImage Img("C:\\buf.jpg");
Img = Img.convertToFormat(QImage::Format_RGB32);
for (int y = 0; y < Img.height(); ++y)
{
for (int x = 0; x < Img.width(); ++x)
{
int pixel = Img.pixel(x, y);
int gray = qGray(pixel);
if (gray > 127) gray = 255;
else gray = 0;
int alpha = qAlpha(pixel);
Img.setPixel(x, y, qRgba(gray, gray, gray, alpha));
}
}
//Img.save(Fn, "BMP", Qt::MonoOnly);
QImageWriter writer(Fn);//, "BMP");
writer.write(Img);
sven
Verfasst: 18. Februar 2011 17:20
von franzf
Ich habs mir ja schon gedacht

Deshalb bitte das nächste Mal gleich deinen Code posten, dann gibts gleich die richtige Antwort.
Für jpeg-Lesen brauchst du natürlich das jpeg-imageformats-plugin! Wie du das plugin verteilst, kannst du in den zahlreichen Beiträgen hier im Forum nachlesen (denke eine Suche nach imageformats sollte reichen).
Verfasst: 21. Februar 2011 09:44
von Sven K.
Danke,
habe die Lösungen im Forum gefunden!
hat mir weitergeholfen!
Sven