找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 2308|回復(fù): 0
收起左側(cè)

GDI+不同的地方

[復(fù)制鏈接]
ID:77367 發(fā)表于 2015-4-18 20:39 | 顯示全部樓層 |閱讀模式
       研究了GDI+處理圖像的地方,發(fā)現(xiàn)它一些與眾不同的地方,被它坑了一天。。。。。

      1、GDI+的像素的原點(diǎn)默認(rèn)你在左下角的,所以讀取像素的順序是從最低一行開始的(bottom-left),其他一般的圖像處理軟件,像Photoshop,OpenCV、FreeImage什么的都是在左上角的(top-left)。

    2、GDI+生成的二值圖像也與其他的不同,它用0表示黑色,非0(比特1)表示白色,二其他的像Photoshop恰恰相反的。就是說(shuō)BW位圖的頭文件調(diào)色板相反的。

   3、其他, 可以二值圖像的調(diào)色板的兩種顏色可以隨意的進(jìn)行替換,比如把比特0替換成白色,表示沒有,比特1替換成紅色。




      


附:下面的函數(shù)可以GDI+ Bitmap、Image的調(diào)色板



  • // 修改調(diào)色板的函數(shù)  
  • 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);  
  • }  







回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表