【问题标题】:Dynamic file paths and Image command动态文件路径和图像命令
【发布时间】:2017-01-14 01:53:31
【问题描述】:

我正在尝试创建一个文件路径,其末尾将是一个“images”文件夹,程序将使用该文件夹与 Image 命令一起加载 jpeg 文件。 我希望程序能够动态地知道从启动可执行文件的图像文件夹中加载 jpeg 文件。 我能够在这个网站上找到这个,我添加了 2 底部代码行:

public static string AssemblyDirectory
    {
        get
        {
            string codeBase = Assembly.GetExecutingAssembly().CodeBase;
            UriBuilder uri = new UriBuilder(codeBase);
            string path = Uri.UnescapeDataString(uri.Path);
            return System.IO.Path.GetDirectoryName(path);
        }
    }

    public static string imagePath = @"\images";
    public static string finalImagePath = AssemblyDirectory + imagePath;

如果我设置一个断点,'finalImagePath' 是: "C:\Users\My Name\Documents\Visual Studio 2010\Projects\Universal Serial Diagnostics\bin\Debug\images"

这是正确的,但我如何将其与:

     Image image = Image.FromFile(@"C:\Users\My Name\Desktop\Dip\ENV500008.jpg");

用动态路径替换硬编码路径。 ENV500008.jpg 将存储在 images 文件夹中。 谢谢。

【问题讨论】:

  • 相信你在找Path.GetFileName; msdn.microsoft.com/en-us/library/…。然后与 finalImagePath 连接。
  • 顶部代码获取路径,如何替换变量“finalImagePath”并将其与 Image.FromFile 命令一起使用?
  • Image image = Image.FromFile(@"C:\Users\My Name\Desktop\Dip\ENV500008.jpg");
  • 不清楚您要达到的目标。 Image.FromFile....中包含的路径有什么作用?

标签: c#


【解决方案1】:
string path = AppDomain.CurrentDomain.BaseDirectory + "ENV500008.jpg";

if (System.IO.File.Exists(path))
{
    Image image = Image.FromFile(path);
    // .. the rest of the code that uses the image .. 
}

【讨论】:

  • 虽然这样可行,但由于我要显示大约 100 张图像,我正在使用:
  • 图片 image = Image.FromFile(@finalImagePath + "\\ENV500008.jpg");图片 image5 = Image.FromFile(@finalImagePath + "\\ENV510829-2.jpg");
【解决方案2】:
       Image image = Image.FromFile(@finalImagePath + "\\ENV500008.jpg");

        Image image5 = Image.FromFile(@finalImagePath + "\\ENV510829-2.jpg");

【讨论】:

  • 能否请您为您的答案添加更多上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。
  • OK,1) 我试图动态找到我的 EXE 文件的路径。我在这个网站上找到了答案。 2) 知道路径后,我创建了一个包含大约 100 个 JPEG 文件的“图像”文件夹。我遇到困难的地方是使用 IMAGE 图像 - Image.FromFile(path) 代码。所以我发布了上面的问题。与此同时,我一直在玩弄它。我终于回答了我自己的问题。我试图让我的代码以这样一种方式工作,即如果用户移动了 EXE 文件和图像文件夹,程序仍然可以工作。
  • 我已经迁移到 VS2015,现在将 JPEG 文件作为资源嵌入,exe 的文件大小更大,但我不必担心用户移动 JPEG 文件。感谢您的帮助!
  • 请将所有这些信息添加到帖子本身中,而不仅仅是作为 cmets。帖子中的详细信息更有帮助。
【解决方案3】:

public static string GetAnyPath(string fileName)
{
            //my path where i want my file to be created is : "C:\\Users\\{my-system-name}\\Desktop\\Me\\create-file\\CreateFile\\CreateFile\\FilesPosition\\firstjson.json"
            var basePath = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath.Split(new string[] { "\\CreateFile" }, StringSplitOptions.None)[0];
            var filePath = Path.Combine(basePath, $"CreateFile\\CreateFile\\FilesPosition\\{fileName}.json");
            return filePath;
}

根据需要将 .json 更改为任何类型 参考:https://github.com/swinalkm/create-file/tree/main/CreateFile/CreateFile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多