如何将映像从资源复制到磁盘
本文关键字:复制 磁盘 资源 映像 | 更新日期: 2023-09-27 18:15:11
我将图像添加到我的解决方案中。将编译操作属性更改为资源且不复制。第一次运行时检查应用程序的目录和文件是否存在,如果不存在,则创建它们。我的应用程序需要对象的默认图像。所以这就是为什么我添加图像解决方案。现在我可以把它复制到特定的磁盘位置。
if (!File.Exists(path_exe + "''images''drinks''defaultIMG.jpg"))
{
using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("Data''defaultIMG.jpg"))
{
using (var file = new FileStream(path_exe + "''images''drinks''defaultIMG.jpg", FileMode.Create, FileAccess.Write))
{
resource.CopyTo(file);
}
}
}
我认为最简单的方法是:
<>之前properties . resources . defaulultimg . save (path_exe + "''images''drinks'' defaulultimg .jpg");之前我在http://www.c-sharpcorner.com/uploadfile/40e97e/saving-an-embedded-file-in-C-Sharp/上找到了代码样本,它运行良好
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Zeszycik.Data.defaultIMG.jpg");
FileStream fileStream = new FileStream("new.jpg", FileMode.CreateNew);
for (int i = 0; i < stream.Length; i++)
fileStream.WriteByte((byte)stream.ReadByte());
fileStream.Close();
GetManifestResourceStream()是否返回null?GetManifestResourceStream总是接受以下格式的资源名:
<namespace>.<path in project>.<filename>
在您的示例中,如果名称空间是Company。应用程序和资源文件路径是"Resources/defaultg.g jpg",你应该调用GetManifestResourceStream作为
Assembly.GetExecutingAssembly().GetManifestResourceStream("Company.Application.Resources.defaultIMG.jpg")
如果不确定程序集中的实际资源名称,请使用以下代码查看程序集中嵌入的资源列表:
foreach( string resourceName in Assembly.GetExecutingAssembly().GetManifestResourceNames() ) {
MessageBox.Show(resourceName);
}
所以,你的代码应该像
if (!File.Exists(path_exe + "''images''drinks''defaultIMG.jpg"))
{
using (var resource = Assembly.GetExecutingAssembly().GetManifestResourceStream("YourNamespace.Resources.defaultIMG.jpg"))
{
using (var file = new FileStream(path_exe + "''images''drinks''defaultIMG.jpg", FileMode.Create, FileAccess.Write))
{
resource.CopyTo(file);
}
}
我假设你已经为你的图片资源设置了" build Action"为"Embedded resource"
更多信息,参见Microsoft . net Framework资源基础。