最近做项目需要实现这么一个功能,需要将Android平板上显示的内容实时传送到投影仪上显示。

连接投影仪的机器安装了 CentOS 6,采用 SDL 开发库做 UI 界面。系统本来的需求只要在投影仪上显示一些图片和文字就可以了。现在要添加了一个监控 Android平板显示的内容,做一个简单的系统分析。首先 Android 平板端要截屏并保存为字节流数组(采用PNG),这个相对简单,网上文章很多。然后就是字节流的发送和接收,采用 UDP 方式,这个也不难,现在的瓶颈就是投影仪端接收到的这个字节流数据,如何通过 SDL 的方式加载并显示。我们知道从磁盘文件中加载图片并显示使用 SDL_p_w_picpath 扩展库的 IMG_Load 函数,在 SDL_p_w_picpath.h 中该函数的下方我发现了另一个加载函数:

extern DECLSPEC SDL_Surface * SDLCALL IMG_Load_RW(SDL_RWops *src, int freesrc);

我猜测该加载函数可能能达到我的要求,该函数使用了一个 SDL_RWops * 类型的参数,于是我再查找该类型的声明,功夫不负有心人,在 SDL_rwops.h 中我找到了该结构体的定义,同时在该头文件中我找到了两个函数,

extern DECLSPEC SDL_RWops * SDLCALL

SDL_RWFromMem(void *mem, int size);

extern DECLSPEC SDL_RWops * SDLCALL

SDL_RWFromConstMem(const void *mem, int size);

这两个函数的名称很明显就是我要的,从内存流中读取图形数据,并且返回一个指向 SDL_RWops 结构体的指针。

于是马上组织代码,首先调用 SDL_RWFromMem 读取 UDP 接收到的数据,接下来将该函数的返回值传送给 IMG_Load_RW 函数,完成图形数据的加载,返回我们熟悉的 SDL_Surface *,然后完成显示,一切 OK。

转载于:https://blog.51cto.com/tcdcr/962389

SDL 从内存流中加载图像并显示相关推荐

  1. Spire.PDF迎来最新版本更新,Spire.PDF 8.7.2 支持从流中加载 OFD 文件

    Spire.PDF 8.7.2 支持从流中加载 OFD 文件 Spire.PDF for .net 更新至v8.7.2 .该版本支持从流中加载OFD文件,并在WPF程序集中增加了一个支持打印设置的接口 ...

  2. go语言html css,html – 在Golang中加载图像和CSS

    我在项目根目录的package main中的server.js中设置了一个路由 http.HandleFunc( "/",route.IndexHandler) IndexHand ...

  3. Windows编程 内存中加载图片并显示 Direct离屏表面的实现

    版本:VS2015 语言:C++ 前段时间去白空轨了,感觉快燃尽了.没有看Windows的书,所以博客也没更,不过请组织放心,从现在开始,即使是节假日,我也会仔细钻研DirectX的. 今天是第七章的 ...

  4. Openlayers中加载GeoJson文件显示地图

    场景 Openlayers下载与加载geoserver的wms服务显示地图: Openlayers下载与加载geoserver的wms服务显示地图_BADAO_LIUMANG_QIZHI的博客-CSD ...

  5. picturectrl控件中加载图片并显示_在 CRA 中使用 webp 图片提升加载性能

    webp 是 google 提倡的一种新的 image 格式,意在为 web 提供体积更小的图片格式.通常情况下,无损压缩可以减小 25%-35% 的体积(有例外情况,反而会增大体积,但是是因为转换图 ...

  6. Java中加载图片并显示

    目录 一.首先获得图片 二.将图片显示在界面中 三.完整代码展示 一.首先获得图片 关于图片的加载方式有很多种,这里我只介绍一种,毕竟太多记不住. URL url1=deskball.class.ge ...

  7. 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL

    暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html

  8. picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片

    前提:图片必须是.jpg或.bmp格式的图片. (一)将保存在电脑桌面上的图片显示在EasyX窗体中,图片路径为:C:甥敳獲Administrator.USER-20190823VFDesktop锤头 ...

  9. EasyUI的Datagrid在Dialog中加载数据不显示

    在第一次Dialog显示(open)的时候是正常的.调用Dialog的close再次调用open的时候就不行了. 关闭在打开的效果 代码具体如下 <!DOCTYPE html> <h ...

最新文章

  1. 企业如何进行团队协作?
  2. boa支持https_Boa: 在 Node.js 中使用 Python
  3. JavaWeb学习总结(十三)——使用Session防止表单重复提交
  4. 练习:利用函数实现一个登陆系统
  5. 选择嵌套_Python if语句嵌套(入门必读)
  6. JVM之垃圾收集器回收种类
  7. 半天搭建你的Jenkins持续集成与自动化部署系统
  8. 争时金融java_Java高并发编程基础之AQS
  9. calender获取日期前几月_java获取当前时间和前一天日期(实现代码)
  10. 企业级整站集群数据备份项目方案详解
  11. mvvm模式和mvc的区别_MVC,MVVM,MVP是指什么,它们之间有啥区别
  12. Tensorflow Estimator之DNNClassifier
  13. matlab 删除cell 中的 0 元素
  14. CNC加工中心程序代码大全,你还不收藏吗?
  15. 回撤率 python 平台_python夏普率、最大回撤计算
  16. 如何安装biopython_Biopython - 安装
  17. WPF实现截图功能——WPF制作文字OCR软件(三)
  18. matlab已知随机样本求总体均值与方差的矩估计值(例子应用)
  19. python的标准随机数生成器模块_Python:带均值和标准差的随机数生成器
  20. 字根校对-中文校对软件

热门文章

  1. php课程 4-16 数组自定义函数(php数组-桶)
  2. ipset-linux防火墙的扩展实现对指定ip的限制访问
  3. 无需共享存储发布高性能的虚拟桌面
  4. WebSocket子协议STOMP详解
  5. 理解 .NET 2015
  6. DOMContentLoaded事件
  7. 面试题7:用两个栈实现队列
  8. php屏蔽审查元素,js屏蔽F12审查元素,禁止修改页面代码等实现代码
  9. java遇到无穷大抛异常_Java中一个for语句导致无穷大死循环的例子
  10. python 分布式锁_Python分布式锁 Sherlock