[Interest] QImage transformed() background color

Jason H jhihn at gmx.com
Mon May 7 22:49:44 CEST 2018



> Sent: Monday, May 07, 2018 at 4:41 PM
> From: "Christoph Feck" <cfeck at kde.org>
> To: "Jason H" <jhihn at gmx.com>, "interestqt-project.org" <interest at qt-project.org>
> Subject: Re: [Interest] QImage transformed() background color
>
> On 07.05.2018 21:56, Jason H wrote:
> > I'm rotating some images by non-90 degree amounts, but when I do, the image gets filled with a color value (black) for pixels where there is no image data after rotation, but are in the output image, which causes a problem with later analysis because it trips edge detection. It would be nice to be able to control the fill color, or better yet, not have any fill as a result of the rotate, and just use want's in the image. Ideally, I'd like to pass it a fillColor (Qt::transparent) so that I can just look at the alpha channel and ignore pixels with a 0 alpha. How can I accomplish that if I can't select the color?
> >
> > I don't know that it's possible to select the rotated rectangle out and draw it on a transparent image with a QPainter?
> >
> >
> > QImage rotate(const QImage &image, double degrees){
> > 	if (degrees > 0.01 || degrees < -0.01) {
> > 		QTransform tx;
> > 		QPoint center = image.rect().center();
> > 		tx.translate(center.x(), center.y());
> > 		tx.rotate(degrees);
> > 		return image.transformed(tx, Qt::SmoothTransformation);
> > 	} else {
> > 		return image;
> > 	}
> > }
> 
> The rotated image is filled with transparent pixels for ARGB images. You 
> can use QPainter compositing to paint that image on any colored 
> background (or on your original image).


Ah, so that implies that the image I am working on is not ARGB, just RGB...



More information about the Interest mailing list