目标:
- 将计算机硬盘中的图片保存到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
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");
}
答案 0 :(得分:1)
Server.MapPath不能在WPF应用程序中运行 - 它适用于IIS应用程序。
此WPF应用程序在哪里运行?如果它从同一台机器运行,它从哪个目录运行?您需要某种方式让WPF应用程序确定ArticlePicture目录所在的位置。
假设您正在从Web服务器运行WPF应用程序,您知道该目录所在的位置,并且WPF应用程序具有访问该目录的权限,那么您需要做的就是进行文件复制操作。 (如果未修改文件,我认为没有理由将文件保存回WPF应用程序。)
我怀疑您的意图是通过WPF应用程序将图片上传到网站。如果是这样,您可能需要更清楚地解释。
答案 1 :(得分:0)
首先,该目录在运行时不存在,因为它已编译到程序集中。您必须使用磁盘上存在的文件夹,其中您有足够的权限来实际更正图像数据。
我会说你在webapplication的根目录之外创建一个文件夹,你可以在其中编写图片。您希望它位于Web应用程序的根目录之外,因为如果有人知道我猜到的URL,您不希望直接提供图片。