有时在进行网络程序设计时,我们希望客户端接收到服务器传来的图像文件的二进制数组的,能够直接显示,而不是通过保存到临时文件后显示,其实通过COM的IPicture接口,在VB里非常容易做到,代码如下:

Option Explicit
'* ******************************************************* *
'*    模块名称:frmTest.frm
'*    模块功能:直接显示图像数据
'*    作者:lyserver
'*    联系方式:http://blog.csdn.net/lyserver
'* ******************************************************* *
Private Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(7) As Byte
End Type
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As stdole.IUnknown) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (ByVal pStream As Long, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As stdole.IUnknown) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpwsz As Long, pclsid As Any) As Long
Private Const ERROR_SUCCESS = 0&

Function ShowPictureFromStream(ByRef bPic() As Byte) As StdPicture
    Dim IID_IPicture As GUID
    Dim IStm As stdole.IUnknown, IPic As IPicture
    Dim PicW As Long, PicH As Long
   
    If CreateStreamOnHGlobal(VarPtr(bPic(0)), 1, IStm) = ERROR_SUCCESS Then
        If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture) = ERROR_SUCCESS Then
            If OleLoadPicture(ByVal ObjPtr(IStm), UBound(bPic) + 1, 0, IID_IPicture, IPic) = ERROR_SUCCESS Then
                PicW = Me.ScaleX(IPic.Width, vbHimetric, vbPixels)
                PicH = Me.ScaleY(IPic.Height, vbHimetric, vbPixels)
                Set ShowPictureFromStream = IPic
            End If
        End If
        Set IStm = Nothing
    End If
    Erase bPic
End Function

Private Sub Command1_Click()
    Dim b() As Byte
   
    Open "c:/temp2.jpg" For Binary As #1
    b = InputB(LOF(1), 1)
    Close #1
   
    Set Me.Picture = ShowPictureFromStream(b)
    Erase b
End Sub

请注意,因为要模拟直接显示二进制图像数据,上述代码中并没有使用LoadPicture方法。
摘自:如何直接显示内存中的二进制图像数据


更多精彩>>>

VB如何直接显示内存中的二进制图像数据相关推荐

  1. 如何显示内存中的 HTML 网页

    一.如何显示内存中的 HTML 网页 或者因为网页保密的考虑:或者因为软件分发的考虑,有的时候就需要让 IE 或 IE 浏览器控件显示内存或资源中的 HTML 网页.在 MFC 中,CHtmlView ...

  2. vc显示html文档,VC++ 显示内存中地HTML内容

    IE WebControl控件提供了显示HTML的功能,但是只能够显示URL或者是文件.很多朋友都询问关于显示内存中HTML内容的方法,前几天我在网上找到一段代码,我在这里进行一些讲解. 思路: 先用 ...

  3. VB6 在内存中生成bitmap图像,并将其保存为byte()数组

    在VB6内存中创建bitmap图像,并将其保存为byte()数组 在项目中添加一个模块,用于封装GDIPlus函数 下载地址: gdiplus函数封装 从内存中创建相应的信息 '全局声明 Dim to ...

  4. 图像间距pitch是什么?(linesize、stride)(指图像中的一行图像数据所占的存储空间的长度)

    width 图像的宽度,就是像素的个数 间距(pitch) 在图像数据传输和显示的过程中有一个不常用的参数:间距. 它有很多的别名, 在使用d3d(Direct3D,是微软为提高3D游戏在Window ...

  5. 如何在Tensorflow.js中处理MNIST图像数据

    by Kevin Scott 凯文·斯科特(Kevin Scott) 如何在Tensorflow.js中处理MNIST图像数据 (How to deal with MNIST image data i ...

  6. Qt 中获取摄像头图像数据的方法

    Qt 中获取摄像头图像数据的方法 在 Qt 中提供了 QCamera 类用来操作摄像头.(这里的摄像头指的是电脑上常用的那种 USB 摄像头或网络摄像头,暂时还不支持工业相机.)摄像头获取的实时图像可 ...

  7. caj文件打不开显示内存不足_面向大数据的高效存储容量缩减技术研究

    面向大数据的高效存储容量缩减技术研究 [摘要]:随着信息化的发展,全球数据量呈指数式增长,数据中心存储规模快速迈向了PB级甚至是EB级,其中包含了大量的冗余数据.这些冗余数据占用了大量的存储资源,导致 ...

  8. 内存 增量数据持久_内存中数据模型和大数据持久性

    内存 增量数据持久 ORM框架在需要与关系数据库进行交互时可以帮助开发人员. 对于关系数据库,有许多出色的ORM框架,例如Hibernate和Apache OpenJPA,其中一些确实很棒. 如今,大 ...

  9. 内存中数据模型和大数据持久性

    ORM框架在希望与关系数据库进行交互时可以帮助开发人员. 对于关系数据库,有许多出色的ORM框架,例如Hibernate和Apache OpenJPA,其中一些确实很棒. 如今,大数据正在涌现,越来越 ...

最新文章

  1. NFS基本配置与NFS客户端自动挂载
  2. SAP WM 如何看一个交货单相关的TO是从哪些货架上拣配的?
  3. CoverageMeter中关于“line coverage”不准确的解释
  4. 掌握 Linux 调试技术【转】
  5. GridView的翻页
  6. 全球及中国手持式吸尘器行业供应需求及未来投资潜力预测报告2022-2027年
  7. pdf.js插件使用记录,在线打开pdf
  8. CPP函数调用的方法
  9. shiro会话监听_SpringBoot集成Shiro会话管理
  10. 百年来,清华为何都没有培养出诺贝尔奖得主?
  11. inittab文件剖析[CentOS 5.X](第二版)
  12. [hashmap|空间换时间] leetcode 1 两数之和
  13. win10 系统 程序员计算器面板介绍和功能使用
  14. html表格中boder属性与style中boder属性区别
  15. OSError: cannot open resource
  16. scheme语言编写执行
  17. delphi 水晶按钮
  18. happen before 原则
  19. 我的第一个小程序(Discuz! + 微信小程序)
  20. 邮件裸奔,两大加密协议 PGP 与 S/MIME 被曝明文漏洞;DeepMind AI 能让自己拥有像哺乳动物那样的导航能力...

热门文章

  1. 码农翻身之编程语言的巅峰
  2. 蘑菇车联打造一体化解决方案,致力产业协同发展
  3. 华为云 EI 打造城市智能体,共筑数字政府基石
  4. 程序员必须掌握的 12 个 JavaScript 技能!
  5. 90 后程序员开发“AI 吵架神器”,专治女朋友各种不服!
  6. 如何修改订单金额实现 0.01 元买 iPhone X?
  7. vue 打印出git提交信息_VUE项目构建打包生成Git信息(VERSION和COMMITHASH文件)
  8. java程序运行过程数据丢失怎么办_java运行过程中OutOfMemoryError是什么原因?怎么解决...
  9. supervisor 监控mysql_利用superlance监控supervisor运行状态
  10. wxpython 表格粘贴,wxpython在整个应用程序中剪切复制和粘贴