查看: 1117|回复: 7

Image转换成File

[复制链接]

该用户从未签到

发表于 2010-12-3 13:57:06 | 显示全部楼层 |阅读模式
如题,怎么把场景中获取到的图片osg::Image* image转化成文件File* file?

该用户从未签到

发表于 2010-12-3 14:21:07 | 显示全部楼层
这是从我以前的程序里摘出来的,只是将image data写入txt,不过大概差不多了:
  1. osg::Image* aaa = osgDB::readImageFile( "aaa.bmp" );
  2.                 if(aaa)
  3.                 {
  4.                         FILE* file = fopen("aaa.txt","w");
  5.                         for(int i =0;i<(s* t * r);i++)
  6.                         {
  7.                                 tempChar[i]=(aaa->data()[i]);
  8.                         }
  9.                         fwrite(tempChar,sizeof(char),
  10.                                 s * t * r, file);
  11.                         fclose(iniFile);
  12. }
复制代码

该用户从未签到

 楼主| 发表于 2010-12-3 15:07:43 | 显示全部楼层
谢谢,请问下s,t,r 是什么参数, 不知道可不可以在内存中把osg::Image* image转化成文件File* file,而不写出文件呢?

该用户从未签到

 楼主| 发表于 2010-12-3 15:11:37 | 显示全部楼层
或者说是通过osg::Image* image的值,获取到BITMAPFILEHEADER bmpFileHdr;和
MAPINFOHEADER bmpInfoHdr;

该用户从未签到

发表于 2010-12-3 15:15:28 | 显示全部楼层
s t r 分别是image的 width height depth

FIle:
http://www.cplusplus.com/reference/clibrary/cstdio/tmpfile/

该用户从未签到

 楼主| 发表于 2010-12-3 15:59:29 | 显示全部楼层
谢谢这位大哥,再次请问您一下,上面函数中的tempChar您是怎么初始化的,我定义了一个char tempChar[128];和char* tempChar 都不对?
还有那个depth是不是可以自己定义的呢?

该用户从未签到

发表于 2010-12-3 16:20:01 | 显示全部楼层
哦,我又看了下,tempChar应该是unsigned char,大小应该是s*t*r ,这样的话,
  1. # fwrite(tempChar,sizeof(unsigned char),    s * t * r, file);
复制代码
image->r() 就可以得到image的depth。s t 对应 image->s() t().
具体可以看
osg/image.h 或者
http://www.openscenegraph.org/do ... d8ba0aea3c8ae4e3523

希望对你有所帮助。

该用户从未签到

 楼主| 发表于 2010-12-3 17:20:15 | 显示全部楼层
恩,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表