如何将映像从资源复制到磁盘

本文关键字:复制 磁盘 资源 映像 | 更新日期: 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资源基础。