找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2335|回复: 0
收起左侧

GDI+不同的地方

[复制链接]
ID:77367 发表于 2015-4-18 20:39 | 显示全部楼层 |阅读模式
       研究了GDI+处理图像的地方,发现它一些与众不同的地方,被它坑了一天。。。。。

      1、GDI+的像素的原点默认你在左下角的,所以读取像素的顺序是从最低一行开始的(bottom-left),其他一般的图像处理软件,像Photoshop,OpenCV、FreeImage什么的都是在左上角的(top-left)。

    2、GDI+生成的二值图像也与其他的不同,它用0表示黑色,非0(比特1)表示白色,二其他的像Photoshop恰恰相反的。就是说BW位图的头文件调色板相反的。

   3、其他, 可以二值图像的调色板的两种颜色可以随意的进行替换,比如把比特0替换成白色,表示没有,比特1替换成红色。




      


附:下面的函数可以GDI+ Bitmap、Image的调色板



  • // 修改调色板的函数  
  • void ResetPalette(Bitmap *pBitmap)  
  • {  
  •     if(!pBitmap)  
  •         return;  
  •   
  •     // Modify Palette  
  •     UINT size = pBitmap->GetPaletteSize();  
  •     TRACE1("The size of the palette is %d bytes.\n", size);  
  •   
  •     ColorPalette *ppal = (ColorPalette*)malloc(size);  
  •     pBitmap->GetPalette(ppal, size);  
  •   
  •     // Debug Palette  
  •     if(size > 0)  
  •     {  
  •         TRACE1("There are %u colors in the palette.\n", ppal->Count);  
  •   
  •         for(UINT j = 0; j < ppal->Count; ++j)  
  •             TRACE1("0x%x\n", ppal->Entries[j]);  
  •     }  
  •   
  •     // Reset Palette  
  •     ppal->Entries[0] = Color::MakeARGB(0xff,0xff,0xff,0xff);  
  •     ppal->Entries[1] = Color::MakeARGB(0xff, 0xff,0x00,0x00);  
  •   
  •     pBitmap->SetPalette(ppal);  
  •   
  •     free(ppal);  
  • }  







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表