SDL显示内存中的图像
<textarea readonly="readonly" name="code" class="c++">
#include <stdio.h>
#include "SDL/SDL.h"
#include "SDL/SDL_image.h" void ShowPic(unsigned char *buf, int size, SDL_Surface *screen, int x, int y)
{
SDL_RWops *src;
SDL_Surface *image;
SDL_Rect dest; src = SDL_RWFromMem(buf, size); /* 将BMP文件加载到一个surface*/
image = IMG_Load_RW(src, 1);
if ( image == NULL )
{
fprintf(stderr, "无法加载 %s\n", SDL_GetError());
return;
} /* Blit到屏幕surface。onto the screen surface.
这时不能锁住surface。
*/
dest.x = x;
dest.y = y;
dest.w = image->w;
dest.h = image->h;
SDL_BlitSurface(image, NULL, screen, &dest); /* 刷新屏幕的变化部分 */
SDL_UpdateRects(screen, 1, &dest);
} int main(int argc, char *argv[])
{
unsigned char *buf;
FILE *fp;
int size, i; if (argc != 2)
{
fprintf(stderr, "Usage:%s file_name\n", argv[0]);
exit(1); } if (SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0)
{
fprintf(stderr, "无法初始化SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit); SDL_Surface *screen; screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if (screen == NULL)
{
fprintf(stderr, "无法设置640x480的视频模式:%s\n", SDL_GetError());
exit(1);
} fp = fopen(argv[1], "r");
if (fp == NULL)
{
perror("fopen");
exit(1);
} fseek(fp, 0L, SEEK_END);
size = ftell(fp);
printf("file size:%d\n", size);
rewind(fp); buf = malloc(size);
if (buf == NULL)
{
perror("malloc");
exit(1);
}
memset(buf, 0, size); i = fread(buf, size, 1, fp);
if (i < 0)
{
perror("fread");
exit(1);
}
fclose(fp); printf("read:%d\n", i); #if 0
for (i = 0; i < 100; i++)
{
if (i % 10 == 0)
printf("\n");
printf("%02X ", buf[i]);
}
printf("\n");
#endif
ShowPic(buf, size, screen, 0, 0); printf("please enter Enter to exit....");
getchar(); return 0;
}
SDL显示内存中的图像的更多相关文章
- 使用GDI+显示OpenCV中的图像IplImage
OpenCV虽然自带了轻量级的界面库HighGUI,但是支持的图像化元素实在是太少了,一般只在前期算法测试时使用.实际产品还是使用MFC库.因此本文记录了如何在GDI+中显示OpenCV中的IplIm ...
- [OpenCV Qt教程] 如何在内存中压缩图像
本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-comprimere-un-immagine-in-memoria/ ...
- iOS之在内存中绘图
与直接在UIView控件上绘图不同,在内存中绘图时,需要开发者自己准备绘图环境,Quartz 2D提供了一个非常便捷的函数:UIGraphicsBeginImageContext(CGSize siz ...
- wpf在image控件上快速显示内存图像
这是在博客园的第一篇文章 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包含图像头等信息)快速显示到界面,那么 ...
- EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载
之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...
- EF如何操作内存中的数据和加载外键数据:延迟加载、贪婪加载、显示加载
EF如何操作内存中的数据和加载外键数据:延迟加载.贪婪加载.显示加载 之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需 ...
- 利用GDAL从内存中直接解析图像数据
对于网络数据源,调度中可以把数据写入本地,然后读取本地数据格式进行影像的解析(地形有时候也用tif等格式). 此种方式会每次调度进行不必要的IO开销和时间花费. GDAL提供了相应的接口,直接从内存中 ...
- OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式
以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列像素的三个通道数据组成一个一维数组,一行像素组成一个二维数组,整幅图像组成一个三维数组,即: Mat.dat ...
- Caffe Blob针对图像数据在内存中的组织方式
Caffe使用Blob结构在CNN网络中存储.传递数据.对于批量2D图像数据,Blob的维度为 图像数量N × 通道数C × 图像高度H × 图像宽度W 显然,在此种场景下,Blob使用4维坐标定位数 ...
随机推荐
- eclipse打开文件位置Open Explorer 插件
,OpenExplorer插件可以满足这个功能,可以到https://github.com/samsonw/OpenExplorer/downloads下载最新版本,将jar包放到eclipse的pl ...
- Poj3468-A Simple Problem with Integers(伸展树练练手)
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- html 表单初步学习
<html> <head> <title> 静态页面</title> </head> <body> 这是一个静态页面<br ...
- 第03讲- 第一个Android项目
第03讲第一个Android项目 Android项目目录结构: 重要文件: src res AndroidManifest.xml 包含内容: MainActivity.java (程序主视图) 存放 ...
- Jquery radio checked
Jquery radio checked radio 1. $("input[name='radio_name'][checked]").val(); //选择被选中Rad ...
- jquery.validate详解二
五.常用方法及注意问题 1.用其他方式替代默认的SUBMIT $().ready(function() { $("#signupForm").validate({ ...
- struts——拦截器
什么是拦截器 拦截器(Interceptor)是Struts 2的一个强有力的工具,有许多功能都是构建于它之上,如国际化(前两篇博客介绍过).转换器,校验等. 拦截器是动态拦截Action调用的对象. ...
- poj1330Nearest Common Ancestors(LCA小结)
题目请戳这里 题目大意:意如其名. 题目分析:本题只有一个查询,所以可以各种乱搞过去. 不过对于菜鸟而言,还是老老实实练习一下LCA算法. LCA有很多经典的算法.按工作方式分在线和离线2种. tar ...
- Linux系统守护进程详解ntsysv 可以关掉那些服务
acpid, haldaemon, messagebus, klogd,network, syslogd 以上几个服务必须开启!其他的分析如下: 1.NetworkManager,NetworkMa ...
- 【js】判断设备类型,访问相应的网站
引入 function uaredirect(f) { try { if (document.getElementById("bdmark") != null) { return ...