WICConvertBitmapSource + CopyPixels results in blue image
See the question and my original answer on StackOverflowThe PNG encoder only supports GUID_WICPixelFormat32bppBGRA
(BGR) for 32bpp as specified in PNG Native Codec official documentation. When you call it with GUID_WICPixelFormat32bppRGBA
, it will not do channel switching. The pervert will just use your pixels as they were BGR, not RGB, and will not tell you there's a problem.
I don't know what you're trying to do, but in your example, you could just replace GUID_WICPixelFormat32bppRGBA
by GUID_WICPixelFormat32bppBGRA
in the call to WICConvertBitmapSource (and also replace the definition of the last pixelFormat
variable to make sure your source code is correct, but it doesn't change anything).
PS: you can use Wic to save files, not need to create stream using another API, see my answer here: Capture screen using DirectX