在WPF应用程序中保存图片

时间:2011-08-21 08:02:44

标签: c# wpf

目标:
- 将计算机硬盘中的图片保存到WPF的应用程序中 - 添加图片后,您可以在更新解决方案和项目后在Visual Studio中查看图片。

问题:

  

我不知道如何在我的WPF应用程序中保存图片。至   更具体我希望图片保存在地图中   ArticlePicture来自项目DataAccessLibrary。

同样,我知道如何在ASP.net MVC中执行此操作,但在WPF应用程序中却不知道。 MVC的语法在WPF应用程序中不起作用。

请记住,图片并非直接来自互联网。我将图片直接从我的个人电脑上传到WPF应用程序。 WPF应用程序存储在我的个人电脑中。

图片的输入数据发生在项目MediaStore

图片的目录地址是:
“C:\ Users \ Fullmetalboy \ Desktop \ Firefox download \ picture.gif”

项目的目录地址及其地图ArticlePicture是:
“E:\项目\ MediaStore \ DataAccessLibrary \ ArticlePicture \”

目标是使用此新地址将图片添加并复制到地图“ArticlePicture” “E:\项目\ MediaStore \ DataAccessLibrary \ ArticlePicture \ picture.gif

我尝试过这些链接,但不幸的是,它没有给我任何成功。

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapsource.aspx http://msdn.microsoft.com/en-us/library/ms748873.aspx#_imageformats

enter image description here

WPF应用程序中的语法代码

private void btnBrowse_Click(object sender, RoutedEventArgs e)
{
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();

    dlg.Filter = "jpg files (*.jpg)|*.jpg|gif files (*.gif)|*.gif|jpeg files (*.jpeg)|*.jpeg";

    dlg.Multiselect = false;
    bool? result = dlg.ShowDialog();

    if (result == true)
    {
        Stream fInfo = dlg.OpenFile();



        using (System.Drawing.Image correctPicture = System.Drawing.Image.FromStream(fInfo))
        {

            if (correctPicture.Width <= 180 && correctPicture.Height <= 250)
            {
                var fileName = System.IO.Path.GetFileName(dlg.FileName);

                var path = System.IO.Path.Combine(Server.MapPath("/Content/Images/"), fileName);

            }
            else
            {

            }                    




        }


    }


}

ASP.net中的语法代码mVC //

// POST: /Admin/Produkt_ListaCreate/

[HttpPost, Authorize(Roles = "Admin")]
public ActionResult Produkt_ListaCreate(Bok pMyBok, HttpPostedFileBase file)
{

    if (file != null)
    {

        using (System.Drawing.Image correctPicture = System.Drawing.Image.FromStream(file.InputStream))
        {
            if (correctPicture.Width <= 180 && correctPicture.Height <= 250)
            {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(Server.MapPath("/Content/Images/"), fileName);
                file.SaveAs(path);
                pMyBok.BokBildUrl = "/Content/Images/" + fileName;
            }
            else
            {
                TempData["message"] = "Den uppladdade bilden fungerar inte pga att den uppfyller inte storlekens och formatets kriterier.";

                return RedirectToAction("index");
            }
        }   


    } // if (file != null)

    _myIBookRepository.Add(pMyBok);
    _myIBookRepository.Spara();
    TempData["message"] = "En boken är skapad.";

    return View("index");
}

2 个答案:

答案 0 :(得分:1)

Server.MapPath不能在WPF应用程序中运行 - 它适用于IIS应用程序。

此WPF应用程序在哪里运行?如果它从同一台机器运行,它从哪个目录运行?您需要某种方式让WPF应用程序确定ArticlePicture目录所在的位置。

假设您正在从Web服务器运行WPF应用程序,您知道该目录所在的位置,并且WPF应用程序具有访问该目录的权限,那么您需要做的就是进行文件复制操作。 (如果未修改文件,我认为没有理由将文件保存回WPF应用程序。)

我怀疑您的意图是通过WPF应用程序将图片上传到网站。如果是这样,您可能需要更清楚地解释。

答案 1 :(得分:0)

首先,该目​​录在运行时不存在,因为它已编译到程序集中。您必须使用磁盘上存在的文件夹,其中您有足够的权限来实际更正图像数据。

我会说你在webapplication的根目录之外创建一个文件夹,你可以在其中编写图片。您希望它位于Web应用程序的根目录之外,因为如果有人知道我猜到的URL,您不希望直接提供图片。