[Interest] QImage transformed() background color

Christoph Feck cfeck at kde.org
Mon May 7 22:41:33 CEST 2018


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).




More information about the Interest mailing list