Congratulations to our 2022 Qt Champions!

QImage color painting question

  • Hi, I got a QImage and I want to paint only the red color channel to screen with QPainter.
    I want to paint the red color channel as grayscale, not as red. The blue and green channels should not be painted, I only want information from the red channel.

    What is the best approach?

    Thank you :)

  • One simplistic way is to use iterate over the pixels of your QImage and create a new filtered QImage where each pixel has a value of (r, r, r) where r is the red channel of your original image. Then display your new image.

  • If your image is going to be changing often then it might be better to do this in hardware by using OpenGL and a suitable fragment shader.

  • Thank you, yes, my image is updated 20 times a second, so I want to avoid heavy operations.

    Is there no easy way around this? Do I really need to manipulate the image in such a way?

  • For that kind of refresh rate I would definitely look at OpenGL so that the heavy lifting is done in hardware rather than software (assuming you have an accelerated OpenGL implementation).

  • I agree: you'll have to turn to HW accelerated methods for this, and OpenGL would be the first candidate for that.

  • Okay, thank you :)

Log in to reply