我有一个 BYTE 数组(RGB 格式)的图像,我需要对其进行编码。我做了,但是颜色变了。
/*Create stream and initialized*/
hr = piFactory->CreateStream(&piStream);
hr = piStream->InitializeFromFilename(L"..\\test.jpg",GENERIC_WRITE);
/*created an encoder. I want to save JPG*/
hr = piFactory->CreateEncoder(GUID_ContainerFormatJpeg, NULL, &piEncoder);
做了一些操作,还尝试设置像素格式。
hr = piBitmapFrame->SetPixelFormat(&formatGUID);
但它总是设置为“GUID_WICPixelFormat24bppBGR”
我在这里写图像数据。
/*pBitmap contains image data*/
hr = piBitmapFrame->WritePixels(lHeight, cbStride, cbBufferSize, pBitmap);
问题是图像的颜色发生了变化,我发现如果我将 RGB 更改为 BGR,那么输出看起来很好。所以我做了这个
for(int i = 0; i < DataSize; i += 3)
{
inBuff[i] = pBitmap[i+2];
inBuff[i + 1] = pBitmap[i+1];
inBuff[i + 2] = pBitmap[i];
}
pBitmap = inBuff
但我不想在这里花更多时间循环整个图像。我需要告诉 WIC“将数据视为 RGB(或 BGR)”。
那可能吗?如果是那怎么办?