QPainter::drawImage-Qualität

Verschiedenes zu Qt
Antworten
motomoto
Beiträge: 10
Registriert: 7. April 2010 07:31

QPainter::drawImage-Qualität

Beitrag von motomoto »

Hi,

ich bin endlich wieder einmal dazu gekommen mit Qt meinen Photo-Gallerie-Generator zu bauen.

Habe da eine Frage: Ich picke aus einem QImage ein gedrehtes Rechteck heraus, dass ich dann als Bild in einem anderen Größenformat speichern möchte.

Drehen und Herauspicken geht sehr gut mit rotImg = QPainter::transformed(...)
In das Zielbild kopiere ich nun den Ausschnitt mit QPainter::drawImage(myCutOut...) - vereinfacht geschrieben.

Leider ist die Qualität des Ergebnisses nicht ausreichend - es sind Stufen im kleingeschrupften Thumbnail -Zielbild zu sehen.

Hier das Snippet:

Code: Alles auswählen

            // Create empty image and a painter
            QImage dstImg(fmtDef.outerSize(), QImage::Format_RGB32);
            QPainter painter(&dstImg);
            painter.setRenderHint(QPainter::SmoothPixmapTransform, true);

            // fill it with the padding color
            QColor padColor("#"+FMTVAR("PADCOLOR"));
            painter.fillRect(fmtDef.outerRect, padColor);

            // main job: resize source rotated image cout-out
            painter.drawImage(
                fmtDef.innerRect,
                rotImg,
                rotRect);
           // Oooops sieht net doll aus bei innerRect = (x, y, 128, 128) und outerRect = (x, y, 2000, 1000)

Sollte ich vielleicht das Resizing anders machen? Z.B. mit QImage::transformed(). Die Qualität scheint da besser zu sein. Ich wundere mich, dass da intern nicht die gleichen Routinen arbeiten.

Die Frage: ist das drawImage-Resizing schlechter als eine Transformation mit QTransform?

Habe letztes Jahr Tips von franzf bekommen - besten Dank, siehe
http://www.qtforum.de/forum/viewtopic.p ... mek#p57374
Antworten