在解决方案中,我有一个控制台应用程序(MyApp),该应用程序执行另一个项目(MyProject)中的方法。 在MyProject中,我有一个包含图像的文件夹。如何使用例如从文件夹引用图像Image.FromFile()?
诸如Directory.GetCurrentDirectory()之类的方法将返回MyApp而不是MyProject的路径 我缺少明显的东西吗?
答案 0 :(得分:2)
您可以将图像文件标记为嵌入式资源。右键单击图像文件>属性,将 Build Action 设置为 Embedded Resource 。
在MyProject
,创建返回图像的公共方法,在这种情况下,path
签名应为清单资源名称。
public Image FindImageByPath(string path) // eg: MyProject.ImageFolder.MyImage.png
{
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(path))
return Image.FromStream(stream);
}
另一种方法是将图像存储到资源文件(.resx)。
答案 1 :(得分:1)
您可以直接直接引用该文件路径,即,如果我在项目文件夹之外有图片,我可以使用
string fileName = "picture1";
string fileExtension = ".png";
var image1 = Image.FromFile($@"C:\Users\Me\Desktop\Pictures\{fileName}{fileExtension}")
或者,“ .. \”在当前目录中向上移动一个文件夹,“ \\”指的是全局目录
除非您要转义文件路径中的每个“ \”,否则请记住使用字符串文字“ @”。 使用“ $”进行字符串插值 如果同时使用“ $”和“ @”,则必须按“ $ @”的顺序使用它们。
答案 2 :(得分:0)
如果文件包含在项目中,则另一个选项是转到“属性”选项卡,并将“构建操作”标记为“内容”,将“复制到输出目录”标记为“始终复制”或“如果更新则复制”。这样,文件将出现在相对于程序集的路径中。