You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Resources文件夹获取图片的string路径而非byte[]?

解决Resources中图片获取string路径的问题

先说明你之前方法失败的原因:

  • 拼接程序集路径:当图片设为嵌入资源时,它并非磁盘上的独立文件,你拼接的路径自然找不到对应文件。Assembly.Location指向的是编译后程序集的位置,和Resources的原始目录没有关联。
  • 直接调用Resource.day:嵌入资源本身是以byte[]形式存储的,强行转成string必然因类型不匹配报错。
  • byte[]转string:图片是二进制数据,不是文本内容,这种转换完全没有意义,得到的字符串不可能是有效的文件路径。

两种可行的解决方案:

方案1:让图片作为独立文件复制到输出目录(最简单)

  1. 在Visual Studio里找到Resources文件夹下的day.jpg,右键点击属性
  2. 把「生成操作」改成内容,「复制到输出目录」改成如果较新则复制(或「始终复制」)
  3. 代码里用程序基目录拼接路径:
using System.IO;
using System;

string dayWallpaper = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources", "day.jpg");
// 此时File.Exists(dayWallpaper)应该返回true

方案2:将嵌入资源的byte[]写入临时文件(适合不想暴露文件的场景)

如果必须把图片作为嵌入资源打包在程序集里,那就把byte[]写入临时文件,用临时文件的路径:

using System.IO;

// 从资源获取二进制数据
byte[] dayImageBytes = Resource.day;
// 创建临时文件路径
string tempFilePath = Path.Combine(Path.GetTempPath(), "day_temp.jpg");
// 写入到临时文件
File.WriteAllBytes(tempFilePath, dayImageBytes);

// 现在tempFilePath就是可用的string路径,用完后可以删除临时文件
// File.Delete(tempFilePath);

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:40:22