StretchDIBits绘制原始YUV图片,图片的大小是1366 * 768,界面出现花屏倾斜。
1、解决方法,将原始YUV格式大小,进行YUV缩放,达到StretchDIBits可正常绘制的分辨率,比如:1920*1280等等。

//GDI绘制YUV格式的原始数据
void GDIDrawYUV(uint8_t* data, int w, int h)
{static const int dw = 1280;static const int dh = 1080;unsigned char * dstyuv = new unsigned char[dw * dh * 3 / 2];//libyuv进行YUV数据大小转换libyuv::I420Scale(data, w,data + w * h, w / 2,data + w * h + w * h / 4, w / 2, w, h,dstyuv, dw,dstyuv + dw * dh, dw / 2,dstyuv + dw * dh + dw * dh / 4, dw / 2, dw, dh, libyuv::FilterMode::kFilterNone);unsigned char * sprgb = new unsigned char[dw*dh * 3];//libyuv进行YUV转换成RGB24libyuv::I420ToRGB24(dstyuv, dw,dstyuv + dw * dh, dw / 2,dstyuv + dw * dh + dw * dh / 4, dw / 2,sprgb, dw * 3, dw, dh);HDC hdc = GetDC(_playWnd);BITMAPINFO m_bmphdr = { 0 };DWORD dwBmpHdr = sizeof(BITMAPINFO);//24bitm_bmphdr.bmiHeader.biBitCount = 24;m_bmphdr.bmiHeader.biClrImportant = 0;m_bmphdr.bmiHeader.biSize = dwBmpHdr;m_bmphdr.bmiHeader.biSizeImage = 0;m_bmphdr.bmiHeader.biWidth = dw;m_bmphdr.bmiHeader.biHeight = -dh;m_bmphdr.bmiHeader.biYPelsPerMeter = 0;m_bmphdr.bmiHeader.biXPelsPerMeter = 0;m_bmphdr.bmiHeader.biClrUsed = 0;m_bmphdr.bmiHeader.biPlanes = 1;m_bmphdr.bmiHeader.biCompression = BI_RGB;RECT rtWnd;::GetClientRect(_playWnd, &rtWnd);size_t wndWidth = abs(rtWnd.right - rtWnd.left);size_t wndHeight = abs(rtWnd.bottom - rtWnd.top);SetStretchBltMode(hdc, STRETCH_HALFTONE);//问题点:当出现特殊YUV分辨率时,调用此api导致绘制的效果为倾斜黑白,所以之前进行一次YUV缩放int nResult = StretchDIBits(hdc,0, 0,wndWidth, wndHeight,0, 0,dw, dh,sprgb,&m_bmphdr,DIB_RGB_COLORS,SRCCOPY);if (nResult == GDI_ERROR){LOG_ERROR << "StretchDIBits return error";}delete[]dstyuv;delete[]sprgb;ReleaseDC(_playWnd, hdc);
}

还有其他解决方法,请留言一起学习学习。

StretchDIBits绘制原始YUV异常相关推荐

  1. FFmpeg4.1 视频解码,保存原始YUV数据

    FFmpeg4.1 视频解码,保存原始YUV数据 原文:https://blog.csdn.net/qq_38421080/article/details/86520612 网上文章都太老,本文基于F ...

  2. 读取笔记本的摄像头的原始yuv数据,通过libav(ffmpeg编码)

    一.程序的逻辑主要分两部分: 1.通过video4linux2读取摄像头的V4L2_PIX_FMT_YUYV格式的原始数据 2.把V4L2_PIX_FMT_YUYV格式的数据转换成AV_PIX_FMT ...

  3. 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线

    最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...

  4. 音视频数据处理入门:原始视频格式YUV,NV12,NV21,YV12,YU12(I420)

    我们知道,在Camera中设置Preview的回调函数onPreviewFrame时谷歌推荐我们使用NV21,YV12两种格式,因为这两种格式几乎在所有的设备里都通用.然而,视频的格式远远不止这俩种, ...

  5. cad详图怎么画_CAD原始结构图如何绘制?

    原标题:CAD原始结构图如何绘制? CAD原始结构图绘制 原始结构图是设计师对房屋结构进行实地测量之后,根据测量数据放样出的平面图纸,其中包括房屋整体结构.空间结构.门口.窗户的位置尺寸等.原始结构图 ...

  6. 常见视频原始数据格式分析 — YUV

    1. YUV 简介 YUV 是比较常用的原始视频数据数据格式,视频采集芯片输出的码流大部分都是 YUV 数据流形式,而视频处理(如 H264.H265编码等),也是在原始 YUV 码流进行编码和解析. ...

  7. 智能运维探索:有一种多指标异常检测方案,你可能没用过...

    各行业信息化程度迅猛发展的今天,各大企业的信息系统也日趋庞大和复杂. 为了保证系统的正常运行,企业的运维人员会通过相应的KPI(Key Performance Indicator, 关键性能指标)对系 ...

  8. 01 Qt6.2.3播放YUV视频,使用QOpenGLWidget

    Qt6.2.3播放YUV视频,使用QOpenGLWidget 作者 将狼才鲸 创建日期 2022-03-30 工程Gitee源码地址:qt_gui_simple2complex/ source / 0 ...

  9. springMVC自定义全局异常

    SpringMVC通过HandlerExceptionResolver处理程序异常,包括Handler映射,数据绑定以及目标方法执行时所发生的异常. SpringMVC中默认是没有加装载Handler ...

  10. matlab显示YCrCb的图像,【Matlab系列】读取并显示YUV视频文件

    Date: 2019-5-12 1.读取并显示YUV视频文件Matlab代码 %% 1.读取视频内容并显示 fid = fopen('akiyo_cif.yuv','r'); %读入YUV文件 row ...

最新文章

  1. 如何使用PHP发送电子邮件?
  2. 将二叉搜索树转换为有序的双向链表
  3. ADO.NET数据库操作------SqlDataReader和SqlDataAdapter 区别
  4. open、read、write、文件类型
  5. oracle gtx,ORACLE
  6. 【操作系统复习】系统调用
  7. PL/SQL Developer调试Oracle存储过程
  8. AD+DNS安装步骤详解
  9. 在Linux服务器上配置phpMyAdmin
  10. 作者:冯仕政(1974-),男,中国人民大学社会与人口学院教授、副院长。
  11. windows c++ 原子操作_高分辨质谱数据处理操作篇
  12. linux下查看内存频率,内核函数,cpu频率
  13. 【3dmax千千问】食住玩初学3dmax插件神器第24课:3dmax自学渲染效果图教程|疯狂模渲大师、室内设计师、效果图绘图员都应该如何认识VRAY或扫描线CORONA渲染器及其VR核心算法的作用?
  14. 基于MFAC无模型自适应控制的无人艇航向控制
  15. 这5个是不是元宇宙游戏遗珠?
  16. 如何解决:微云下载文件总是下载失败
  17. 百度地图API的两种加载方式
  18. 淘宝网上免费注册页面的错误
  19. python头像变二维码_学了Python之后,美化二维码如此简单
  20. 粽子大战 —— 猜猜谁能赢

热门文章

  1. ROS2机器人笔记22.02.17
  2. matlab二元积分函数求导,多元函数求积分求导.ppt
  3. java规则引擎Drools实战
  4. CUDA版本与显卡驱动匹配
  5. 科技公司网页设计(h5 + css3)
  6. 106.比特率和波特率
  7. arcgispython空间插值_[学习总结]如何利用GIS建模批量处理气象数据-以micaps 第四类数据空间插值为例-专业气象研究-气象家园_气象人自己的家园...
  8. c语言星钻图形的输出
  9. 拯救者Y7000拆机清灰方法及加装机械硬盘
  10. nutch2.3.1 mysql_Nutch-NewsClassify