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维坐标定位数 ...
随机推荐
- The Most Wanted Letter
The Most Wanted Letter You are given a text, which contains different english letters and punctuatio ...
- 【转】android移植之request_suspend_state: wakeup & init: untracked pid xx exited问题的解决
原文网址:http://blog.csdn.net/dragon101788/article/details/8187880 Bluetooth: HIDP (Human Interface Emul ...
- web应用的发布
将web应用打包成.war类型的...因为将其发布到服务器时,其自动解压...非常方便
- AsyncTask实现下载图片
实现效果: /*采用异步任务 AsyncTask<String,Integer, byte[]> * 参数一代表 执行异步任务时传递的参数的类型 * 参数二 如果不采用进度,则填Vo ...
- SQL语句中的DQL、DML、DCL、DDL、CCL、TPL
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统:同时也是数据库 ...
- ASP.NET三层架构的分析
BLL 是业务逻辑层 Business Logic Layer DAL 是数据访问层 Data Access Layer ASP.NET的三层架构(DAL,BLL,UI ...
- ueditor富文本编辑的使用方法
平时在编写上传文件,图片,视频等等这些功能的代码会很繁琐,这里我介绍一款由百度推出的CuteEditor,是一款功能非常强大,支持图片上传.文件下载和word类似的文字编辑器.对于新闻发布系统和博客之 ...
- asp.net mvc输出自定义404等错误页面,非302跳转
朋友问到一个问题,如何输出自定义错误页面,不使用302跳转.当前页面地址不能改变. 还要执行一些代码等,生成一些错误信息,方便用户提交反馈. 500错误,mvc框架已经有现成解决方法: filte ...
- js的 new image()---转
创建一个Image对象:var a=new Image(); 定义Image对象的src: a.src=”xxx.gif”; 这样做就相当于给浏览器缓存了一张图片. 图像对象: 建立图像对象:图 ...
- Android-现场保护
现场保护 当一个活动进入到了停止的状态,是有可能被系统回收的,我们都学过Activity的生命周期 当活动处于onPause() ,onStop() ,onDestroy() 三种状态时程序可能会被A ...