void CAssistDlg::OnBnClickedTest()
{
HDC hdc = ::GetDC(NULL);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hBmpMem = CreateCompatibleBitmap(hdc, , );
HBITMAP hBmpOld = (HBITMAP)SelectObject(hdcMem, hBmpMem);
BitBlt(hdcMem, , , , , hdc, , , SRCCOPY); {
HDC hdcThis = GetDC()->GetSafeHdc();
BitBlt(hdcThis, , , , , hdcMem, , , SRCCOPY); BITMAP bmp = {};//BITMAPINFO;BITMAPINFOHEADER;
int ret = ::GetObject(hBmpMem, sizeof(bmp), &bmp); BITMAPINFOHEADER bmi = {};
bmi.biSize = sizeof(bmi);
bmi.biWidth = bmp.bmWidth;
bmi.biHeight = -bmp.bmHeight;
bmi.biPlanes = bmp.bmPlanes;
bmi.biBitCount = bmp.bmBitsPixel;
bmi.biSizeImage = bmp.bmWidth * bmp.bmHeight * bmp.bmBitsPixel / ;
bmi.biCompression = BI_RGB; BYTE *pBuf = new BYTE[bmi.biSizeImage];
int ret2 = GetDIBits(hdcMem, hBmpMem, , bmp.bmHeight, pBuf, (BITMAPINFO*)&bmi, DIB_RGB_COLORS); for (int i = ;i < bmp.bmHeight;++i)
{
for (int j = ;j < bmp.bmWidth;++j)
{
BYTE r = pBuf[j * + i * bmp.bmWidthBytes + ];
BYTE g = pBuf[j * + i * bmp.bmWidthBytes + ];
BYTE b = pBuf[j * + i * bmp.bmWidthBytes + ]; pBuf[j * + i * bmp.bmWidthBytes + ] = r; //r
pBuf[j * + i * bmp.bmWidthBytes + ] = g; //g
pBuf[j * + i * bmp.bmWidthBytes + ] = b; //b
pBuf[j * + i * bmp.bmWidthBytes + ] = 0xff; //a
}
} PIX pix = {};
pix.w = bmp.bmWidth;
pix.h = bmp.bmHeight;
pix.informat = IFF_BMP;
pix.d = bmp.bmBitsPixel;
pix.wpl = bmp.bmWidthBytes / ;
pix.data = (l_uint32 *)pBuf;
pix.refcount = ;
pixWrite("D:\\pix.bmp", &pix, IFF_BMP);    delete []pBuf;
} SelectObject(hdcMem,hBmpOld);
DeleteDC(hdcMem);
DeleteObject(hBmpMem);
::ReleaseDC(NULL, hdc);
}

从HDC转换到leptonica PIX的更多相关文章

  1. cisco-GNS3-pix防火墙基本配置实操(持续更新)

    一.ASA和PIX基础配置 1.ASA防火墙配置 1.GNS配置 因为使用的GNS3的版本可能不同,gns配置asa防火墙的步骤可能不同 在低版本的gns中直接在qemu选项里可以直接配置,参考:ht ...

  2. CDC和HDC的区别与转换

    CDC和HDC的区别与转换 一.区别与联系HDC是句柄:CDC是MFC封装的Windows   设备相关的一个类:CClientDC是CDC的衍生类,产生对应于Windows客户区的对象HDC是WIN ...

  3. VC++ 中CDC与HDC的区别以及二者之间的转换

    MFC类的前缀都是C开头的  H开头的大多数是句柄  这是为了助记,是编程读\写代码的好的习惯.  CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派 ...

  4. VC中CDC与HDC的区别以及二者之间的转换

    CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的 ...

  5. C# 与 C++ 数据类型比较及结构体转换

    引自:http://www.blogjava.net/heting/archive/2010/03/20/315998.html   C++            C# =============== ...

  6. 使用Canvas把照片转换成素描画

    原文:http://www.alloyteam.com/2012/07/convert-picture-to-sketch-by-canvas/ 腾讯的alloy team写的一个素描效果,挺不错的. ...

  7. c# 刻度:毫米 英寸 像素转换

    从目前所掌握的资料来看,c#程序中将毫米转换像素的方法无非两种: 第一种: 1: /// <summary> 2: /// 以毫米为单位的显示宽度 3: /// </summary& ...

  8. leptonica 学习笔记1

    Updated: April 26, 2015 Leptonica is a pedagogically-oriented open source site containing software t ...

  9. leptonica使用问题

    想要使用leptonica编写一个图像处理程序,或者调用leptonica/prog下例子程序,出现类似错误: leptTest ./test Error in pixReadStreamJpeg: ...

随机推荐

  1. PKU 1201 Intervals(差分约束系统+Spfa)

    题目大意:原题链接 构造一个集合,这个集合内的数字满足所给的n个条件,每个条件都是指在区间[a,b]内至少有c个数在集合内.问集合最少包含多少个点.即求至少有多少个元素在区间[a,b]内. 解题思路: ...

  2. PKU 3267 The Cow Lexicon(动态规划)

    题目大意:给定一个字符串和一本字典,问至少需要删除多少个字符才能匹配到字典中的单词序列.PS:是单词序列,而不是一个单词 思路:                                     ...

  3. spring boot 引导

    链接:https://www.zhihu.com/question/39483566/answer/243413600 Spring Boot 的优点快速开发,特别适合构建微服务系统,另外给我们封装了 ...

  4. Java中什么时候使用extends,什么时候使用implements?

    1.Extends 是实现单继承一个类的关键字,通过使用extends来显示的指明当前类继承的父类,只要那个类不是声明final或者那个类定义为abstract的就能继承.基本声明格式是 [修饰符] ...

  5. playbook管理配置文件

    前言:在生产环境中,经常需要更改多台机器配置文件,所以用playbook来实现nginx配置文件的管理 一.更新nginx配置文件并重新加载 1. 创建对应目录结构 mkdir -p /etc/ans ...

  6. fetch body里数据为ReadableStream 解决办法

    前端工程中发送 HTTP 请求从来都不是一件容易的事,前有骇人的 ActiveXObject ,后有 API 设计十分别扭的 XMLHttpRequest ,甚至这些原生 API 的用法至今仍是很多大 ...

  7. 20145316许心远《Java学习笔记(第8版)》课程总结

    20145316许心远<Java学习笔记(第8版)>课程总结 每周读书笔记链接汇总 ▪ 第一周读书笔记 ▪ 第二周读书笔记 ▪ 第三周读书笔记 ▪ 第四周读书笔记 ▪ 第五周读书笔记 ▪ ...

  8. vmware基于主机模式实现上网(win10)

    首先查看本机win10的网络情况: 网卡VMnet1就是主机模式的网卡,确认本机win10共享了网络给vmnet1这张网卡,如果没有共享,那么进行设置: 进行上述设置,然后在vmnet1网卡上设置ip ...

  9. 20145324 Java实验二

    实验1: 先建立.java 在建立test 测试正常情况 测试出错情况 错误 修改后的代码 正确 测试边界情况 100时出错 修改后的代码 测试 实验2: 先建test在写,java 实验3:建模 练 ...

  10. LeetCode——3Sum

    1. Question Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? ...