上图中第一张为正常显示的图片,第二张为R与B互换后的显示效果,第三张是仿射变换(Affine Transformation)后的效果。
上述代码在 N9H series(N9H20/N9H26/N9H30)上运行测试通过,可应用到 NUC972上。
#define RGB565(r,g,b) (((r & 0x1f) << 11) | ((g & 0x3f) << 5) | (b & 0x1f))
typedef struct tagMEMORYBITMAP
{
int width;
int height;
int bpp;
U16* image;
} MEMORYBITMAP, *PMEMORYBITMAP;
PMEMORYBITMAP RBSwap(GUI_BITMAP *image)
{
PMEMORYBITMAP pMemImage = (PMEMORYBITMAP)malloc(sizeof(MEMORYBITMAP));
pMemImage->width = image->XSize;
pMemImage->height = image->YSize;
pMemImage->bpp = 16;
pMemImage->image = (U16*)malloc(sizeof(U16) * (pMemImage->width) * (pMemImage->height));
U16* src = (U16*)image->pData;
for (int i = 0; i < pMemImage->height; i++) // row
{
for (int j = 0; j < pMemImage->width; j++) // col
{
U8 r = GETR(src[j + i * image->XSize]);
U8 g = GETG(src[j + i * image->XSize]);
U8 b = GETB(src[j + i * image->XSize]);
pMemImage->image[j + i * pMemImage->width] = RGB565(b, g, r);
}
}
return pMemImage;
}
|