找不到Image.FromFile文件

时间:2016-08-07 19:19:12

标签: c# image

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.Drawing;
using System.IO;

namespace BurgerShop.Models
{
    public class FoodDbInitializer : DropCreateDatabaseAlways<FoodContext>
    {
        public byte[] ImageToByteArray(Image image)
        {
            MemoryStream ms = new MemoryStream();
            image.Save(ms, image.RawFormat);
            return ms.ToArray();
        }

        protected override void Seed(FoodContext context)
        {
            Burger hamburger = new Burger
            {
                Id = 1,
                Name = "Гамбургер",
                Price = 49,
                Image = ImageToByteArray(Image.FromFile("BurgerShop\\Content\\img\\Burgers\\1.jpg"))
            };
            base.Seed(context);
        }
    }
}

当我尝试从文件中读取图像时,我FileNotFoundException。我在文件路径中有这个图像,所以奇怪的是编译器找不到文件。请帮帮我!

3 个答案:

答案 0 :(得分:0)

尝试将地址更改为完整地址而不是相对地址。

Image.FromFile("C:\\..\\BurgerShop\\Content\\img\\Burgers\\1.jpg")

还要考虑使用

查找完整路径
fullPath = Path.GetFullPath("\\BurgerShop\\Content\\img\\Burgers\\1.jpg");
var image= Image.FromFile(fullpath);

答案 1 :(得分:0)

因为您似乎使用相对路径,我建议您从* .exe所在的文件夹中找到。

因此,如果您正在运行调试会话,那么exe将位于..bin \ Debug \中,那么这可能会起作用:

Image = ImageToByteArray(Image.FromFile(@"..\..\Content\img\Burgers\1.jpg"))

如果您在其他地方有可执行文件,则应将Content文件夹复制到与程序的* .exe相同的文件夹中。并确保您的* .jpg文件也在那里。 (检查它是* .jpeg还是* .jpg也会有帮助)

然后你可以使用相对路径:

Image = ImageToByteArray(Image.FromFile(@"Content\img\Burgers\1.jpg"))

答案 2 :(得分:0)

Burger hamburger = new Burger
        {
            Id = 1,
            Name = "Гамбургер",
            Price = 49,
            Image = File.ReadAllBytes(Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\img\\Burgers\\1.jpg")))
        };

我已经找到答案并且它有效,谢谢大家,谁参与了我的问题)