首页 > 其他分享 >GDI+不同的地方

GDI+不同的地方

时间:2022-12-13 16:05:55浏览次数:40  
标签:地方 不同 ppal 调色板 0xff GDI pBitmap size


研究了GDI+处理图像的地方,发现它一些与众不同的地方,被它坑了一天。。。。。

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

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

   3、其他。。。


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


// 修改调色板的函数
void CPagePt::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, 0x00,0x00,0x00);

pBitmap->SetPalette(ppal);

free(ppal);
}



标签:地方,不同,ppal,调色板,0xff,GDI,pBitmap,size
From: https://blog.51cto.com/u_15911341/5934360

相关文章

  • GDIPlus灰度化图像
    将RGB彩色图像转为8位的索引颜色先定义一个宏//Greyscaleconversion#defineGREY(r,g,b)(BYTE)(((WORD)r*77+(WORD)g*150+(WORD)b*29)>>8//#defineGREY......
  • WTL for MFC Programmers, Part IX - GDI Classes, Common Dialogs, and Utility Clas
    WTLforMFCProgrammers,PartIX-GDIClasses,CommonDialogs,andUtilityClasses Downloaddemoproject-157KBContentsIntroductionGDIWrap......
  • 前端需要注意的地方
    前端需要注意的地方浏览器的展示不一定正确,因为它具有缓存。如果要验证你的代码是否正确,一定要换一个新的浏览器。在进行第三方库的版本切换时,不一定切换成功最好......
  • MySQL 不同隔离级别,都使用了什么锁?
    大家好,我是树哥。在上篇文章,我们聊了「MySQL啥时候会用表锁,啥时候用行锁」这个问题。在文章中,我们还留了一个问题,即:如果查询或更新时的数据特别多,是否从行锁会升级为表锁?此......
  • 【数据库】数据库 不同场景下 推荐
    目录​​场景​​​​大数据存储数据仓库​​​​Hive​​​​数据实时分析​​​​TIDB​​​​各数据库介绍​​​​TiDB开源分布式关系型数据库​​​​Hive数据仓库......
  • 基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真
    1.算法概述       正交振幅调制是利用已调信号在相同带宽内的频谱正交来实现两路并行的数据信息传输,其信道频带利用率与单边带调制一样,主要用于高速数据传输系统中......
  • 力扣 leetcode 62. 不同路径
    问题描述一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为......
  • proto编译不同文件夹下互相包含的proto
    1.improt内只要写文件名即可2.在编译路径中加两个路径//xpb_publicxpb_src两个文件都在同一级不同的写具体路径,但是不要出现../应该从同./下开始protoc-I./x......
  • linux mailx&dingding机器人报警
    前言:采用devops的思想来确认做本文内容目的作为<用户角色>我想要<结果>以便于<目的>作为运维人员,我想要服务器故障时候能够进行报警,以便于即使处理服务器故障、保障服......
  • soap中的bingding style
    以前一直没留意这个问题,今天再次复习了下,摘录了BLOGJAVA上一位兄弟的文章,总结的不错,现收藏之。就是所谓RPC与Document或者Wrapped,Literal与Encoding先说Literal与Encoding•......