从嵌入式图片资源中读取图片,注意设置图片文件属性
2008-05-02 21:45
501 查看
我参考一例程,试图自己写代码加载文件夹中图片资源。如下:
Image GetImageFromRes(int level)
...{
string name = string.Format("Tetris.BackGrounds.{0}.jpg", level += 1);
System.IO.Stream str = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(name);
return Image.FromStream(str);
}
可结果总是出错,提示是“null不是stream的有效值”。跟踪调试分析发现,str一直为空值(null)。显然,从资源中读取图片是失败的。
这是什么原因?
我首先考虑资源路径是否有误,调试结果是:Tetris.BackGrounds.1.jpg,level=1时。Tetris是顶级命名空间名。大小写无误!(注意:说明显示大小写敏感。我特意检查了多遍)
难道Tetris顶级命名可以不要?去掉重试,还是老问题。
我查了一些资料,说图片资源要确保是嵌入式资源。
什么是嵌入式资源,我估计是要包含到编译代码中的资源吧,即不再是独立的文件了。
那如何操作呢?我点属性窗口,找了好长时间,发现图片文件有属性可设置(右键点击文件,弹出菜单中有“属性”,选择)。其中“生成操作”项改成“嵌入的资源”。
重新运行,成功!
Image GetImageFromRes(int level)
...{
string name = string.Format("Tetris.BackGrounds.{0}.jpg", level += 1);
System.IO.Stream str = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(name);
return Image.FromStream(str);
}
可结果总是出错,提示是“null不是stream的有效值”。跟踪调试分析发现,str一直为空值(null)。显然,从资源中读取图片是失败的。
这是什么原因?
我首先考虑资源路径是否有误,调试结果是:Tetris.BackGrounds.1.jpg,level=1时。Tetris是顶级命名空间名。大小写无误!(注意:说明显示大小写敏感。我特意检查了多遍)
难道Tetris顶级命名可以不要?去掉重试,还是老问题。
我查了一些资料,说图片资源要确保是嵌入式资源。
什么是嵌入式资源,我估计是要包含到编译代码中的资源吧,即不再是独立的文件了。
那如何操作呢?我点属性窗口,找了好长时间,发现图片文件有属性可设置(右键点击文件,弹出菜单中有“属性”,选择)。其中“生成操作”项改成“嵌入的资源”。
重新运行,成功!
相关文章推荐
- 图片文件不是项目一部分或其"生成操作"属性未设置为“资源”
- 关于获取info.plist文件的属性和获取资源管理xcassets里的启动图片的问题
- Linux读取属性配置文件注意事项
- 从资源文件读取图片
- [delphi函数]FileGetAttr、FileSetAttr 读取与设置文件属性
- 切换手机中英文,读取assets对应的资源文件,设置到ScrollView控件中
- 读取属性文件时,封装好IO,用Singleton(单例类)节省资源
- 读取本地资源的图片,根据资源文件获取Bitmap,等比例压缩图片
- WPF项目中读取图片资源,属性为生成操作为Resource
- Latex设置图片等资源文件和.bib 文件以及输出文件与 .tex文件不在同一目录
- 从缓存的源文件中读取资源文件,下载到本地(包括图片和样式脚本)
- servlet学习总结(二)—图片下载和读取属性文件
- VS2015中设置D3D12根签名HLSL文件自动编译属性时的注意事项
- 读取资源属性文件(properties)java.util.ResourceBundle使用详解
- java14.语言进阶------本地文件操作---文件属性的读取、设置
- 用FTP时务必注意,在下载文件的时候将对象的KeepAlive属性设置为false(即下载完成立即断开连接)
- AS3跨域读取图片文件报错需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志
- SpringBoot系列四:SpringBoot开发(改变环境属性、读取资源文件、Bean 配置、模版渲染、profile 配置)
- java读取和设置配置文件中的属性参数
- 读取DLL中的嵌入式资源文件