SDL 从内存流中加载图像并显示
最近做项目需要实现这么一个功能,需要将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 从内存流中加载图像并显示相关推荐
- Spire.PDF迎来最新版本更新,Spire.PDF 8.7.2 支持从流中加载 OFD 文件
Spire.PDF 8.7.2 支持从流中加载 OFD 文件 Spire.PDF for .net 更新至v8.7.2 .该版本支持从流中加载OFD文件,并在WPF程序集中增加了一个支持打印设置的接口 ...
- go语言html css,html – 在Golang中加载图像和CSS
我在项目根目录的package main中的server.js中设置了一个路由 http.HandleFunc( "/",route.IndexHandler) IndexHand ...
- Windows编程 内存中加载图片并显示 Direct离屏表面的实现
版本:VS2015 语言:C++ 前段时间去白空轨了,感觉快燃尽了.没有看Windows的书,所以博客也没更,不过请组织放心,从现在开始,即使是节假日,我也会仔细钻研DirectX的. 今天是第七章的 ...
- Openlayers中加载GeoJson文件显示地图
场景 Openlayers下载与加载geoserver的wms服务显示地图: Openlayers下载与加载geoserver的wms服务显示地图_BADAO_LIUMANG_QIZHI的博客-CSD ...
- picturectrl控件中加载图片并显示_在 CRA 中使用 webp 图片提升加载性能
webp 是 google 提倡的一种新的 image 格式,意在为 web 提供体积更小的图片格式.通常情况下,无损压缩可以减小 25%-35% 的体积(有例外情况,反而会增大体积,但是是因为转换图 ...
- Java中加载图片并显示
目录 一.首先获得图片 二.将图片显示在界面中 三.完整代码展示 一.首先获得图片 关于图片的加载方式有很多种,这里我只介绍一种,毕竟太多记不住. URL url1=deskball.class.ge ...
- 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html
- picturectrl控件中加载图片并显示_如何在EasyX窗体中显示图片
前提:图片必须是.jpg或.bmp格式的图片. (一)将保存在电脑桌面上的图片显示在EasyX窗体中,图片路径为:C:甥敳獲Administrator.USER-20190823VFDesktop锤头 ...
- EasyUI的Datagrid在Dialog中加载数据不显示
在第一次Dialog显示(open)的时候是正常的.调用Dialog的close再次调用open的时候就不行了. 关闭在打开的效果 代码具体如下 <!DOCTYPE html> <h ...
最新文章
- 企业如何进行团队协作?
- boa支持https_Boa: 在 Node.js 中使用 Python
- JavaWeb学习总结(十三)——使用Session防止表单重复提交
- 练习:利用函数实现一个登陆系统
- 选择嵌套_Python if语句嵌套(入门必读)
- JVM之垃圾收集器回收种类
- 半天搭建你的Jenkins持续集成与自动化部署系统
- 争时金融java_Java高并发编程基础之AQS
- calender获取日期前几月_java获取当前时间和前一天日期(实现代码)
- 企业级整站集群数据备份项目方案详解
- mvvm模式和mvc的区别_MVC,MVVM,MVP是指什么,它们之间有啥区别
- Tensorflow Estimator之DNNClassifier
- matlab 删除cell 中的 0 元素
- CNC加工中心程序代码大全,你还不收藏吗?
- 回撤率 python 平台_python夏普率、最大回撤计算
- 如何安装biopython_Biopython - 安装
- WPF实现截图功能——WPF制作文字OCR软件(三)
- matlab已知随机样本求总体均值与方差的矩估计值(例子应用)
- python的标准随机数生成器模块_Python:带均值和标准差的随机数生成器
- 字根校对-中文校对软件