截屏Windows下C BitBlt GetDiBits(截屏windows下c bitblt getdibits).docVIP

截屏Windows下C BitBlt GetDiBits(截屏windows下c bitblt getdibits).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
截屏Windows下C BitBlt GetDiBits(截屏windows下c bitblt getdibits)

截屏Windows下C BitBlt GetDiBits(截屏windows下c bitblt getdibits) PRED = TT; 如果(TT PRED 最大) 马克斯= TT PRED; PRED = TT; SendMessage(HWND,wm_setredraw,真的,0);//对应上面的SendMessage / /从HBM要出数据,存在数据里 ::getdibits(hdccompatible,HBM,0,H,数据和信息头,dib_rgb_colors); / /上面信息头。bmiheader。bibitcount值是32,所以出来的数据一个像素占4个自己,顺序是BGRA / /下面两行转成bgr24 为(int = i 0;i h;i + +) memmove(数据+数据+我我×3,×4, 3); / /数据是倒着的,下面倒回来 对于(int = i 0;i h/2;i + +) { memcpy(数据,数据+我×宽×3宽×3); memcpy(数据+我×宽×3,数据+(h-i-1)×宽×3宽×3); memcpy(数据+(h-i-1)×W×3,1,* 3); } / /转成I420的,因为我弄了个开源的x264,里面能编yuv4:2:0的数据,所以弄成I420的了 / /下面方法可以自己实现,公式 / ******************************************************************************** * *这里YUV与RGB均值YCbCr公式: * * y = 0.257 * r + 0.504 * G + 0.098 * * + 16 * CB = 0.148“*”- 0.291 * G + 0.439 * * + 128 * CR = 0.439 * 128“0.368”0.071 * * r = 1.164 *(y - 16)+ 1.596 *(CR - 128) * = 1.164 *(y - 16)- 0.813 *(CR - 128)- 0.392 *(CB - 128) * = 1.164 *(y - 16)+ 2.017 *(CB - 128) * ******************************************************************************** / kensin::ks_cvrt_bgr24toi420(数据、资料、W、H); / / fwrite(与TT、4, 1、文件); / /把数据写入文件,这里最好另起线程写 fwrite(1,1,宽*高* 3 / 2,导出的文件); / /计算用时,决定需要睡眠多少时间 DD =(int)(kstime。getelapsed()×1000); 如果(MAX1 DD) MAX1 = DD; 毫米; 如果(DD<40) 睡眠(40 - DD); } printf(“% F n”,(双)毫米/ 600); printf(“%d”,MAX1); / /清理工作 fflush(文件); 关闭文件(文件); ::DeleteObject(HBM); ::DeleteDC(hdccompatible); ::ReleaseDC(HWND,HDC); 删除[ ]数据; 删除[ ]资料; printf(“%d”,最大); ::timeendperiod(1);//对应timebeginperiod _getch(); 返回0; } 时间辅助类 命名空间kensin { / ******************************************************************************** *简单的计算时间间隔辅助类 ******************************************************************************** / 类kstime { 私人: __int64 m_base,m_start,m_stop; 布尔m_print; 公共: kstime(bool e_print = false):m_print(e_print) { QueryPerformanceFrequency((large_integer *)( m_base)); restart(); } taking 0, h, date infoheader, dib _ rgb _ colors); name [9] = (char) (20 - count + to). file * outfile = fopen (name, wb); fwrite (

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档