【问题标题】:How to retrieve an image (a jpg file) in C#?如何在 C# 中检索图像(jpg 文件)?
【发布时间】:2014-04-11 09:51:26
【问题描述】:

我是 C# 的新手,但遇到以下问题。

我必须检索一个 hello.jpg 文件,该文件位于我的项目的子目录中。

所以我认为我必须将相对路径放入一个字符串中,然后使用这个字符串来创建一个 Image 对象或类似的东西。

你能帮帮我吗?

编辑:

我已将此代码插入我的班级:

private System.Web.HttpServerUtility server;

protected System.Drawing.Image _backgroundImg = System.Drawing.Image.FromFile(server.MapPath("~/Path/Relative/To/Root.jpg"));

但我收到以下错误消息:

错误 76 字段初始化程序无法引用非静态字段, 方法或属性 'PdfReport.iTextDocumentBase.server' C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\iTextDocumentBase.cs 44 87 PdfReport 错误 77 字段初始值设定项无法引用非静态字段, 方法或属性 'PdfReport.iTextDocumentBase.server' C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\iTextDocumentBase.cs 44 87 PdfReport

为什么?有什么办法可以解决?

【问题讨论】:

  • 你想在页面中显示图片吗?
  • 你能显示一些代码吗?
  • 如果您的图像名称是 hello.jpg 为什么要为 Root.jpg 放置路径?

标签: c# asp.net .net


【解决方案1】:

您可以使用Server.MapPath 查找文件,并使用Image.FromFile 加载它:

var image = Image.FromFile(Server.MapPath("~/Path/Relative/To/Root.jpg"));

请注意这一点 - Image 使用 GDI+,这在 Web 服务器上可能不是最好的。

当然,这假设您想在服务器代码中使用图像。如果您想将其显示给客户端,则只需使用 HTML,无需服务器代码。

【讨论】:

  • 两个疑惑:1)为什么使用var而不是特定类型? 2)我必须将此图像放入使用 iTextSharp(生成 PDF 的库)生成的 PDF 中
  • @AndreaNobili var 是运行时的特定类型,它只是一个语法糖——它在编译期间解决,而不是运行时解决,Visual Studio 知道正确的类型。节省了很多无用的代码重复 :) 是的,如果您需要将其放入 PDF 中,这就是您要使用的代码。只要确保尽快处理掉图像(image.Dispose();,一旦你不再需要它)。
  • 嗯我遇到了一些问题......现在我用你的代码编辑我的原始帖子并解释什么不起作用
  • @AndreaNobili 你的类设计可能有点混乱,但如果你没有Server 实例,你可以使用HttpContext.Current.ServerHostingEnvironment.MapPath
【解决方案2】:

在 lbllogo 中存储图像路径 lblLogo.Text = fuLogo.FileName.ToString();

使用 GetFileName 显示图像 lblLogo.Text = System.IO.Path.GetFileName(imgLogo.ImageUrl);

【讨论】:

    【解决方案3】:

    实际上这里的答案是正确的,但是由于您是新手,因此似乎有些混乱。

    要解决此问题,您必须执行以下操作:

    • 在您的项目中创建一个新文件夹,将文件夹命名为 Images
    • 将您的 hello.jpg 图片复制到 Images 文件夹中。
    • 现在你的图片路径是:~/Images/hello.jpg

    现在为了在页面中显示您的图像,您应该在您的 aspx 页面中创建一个 Image 控件,然后在其中显示您的 hello.jpg 图像。

    在您的 Page_Load 事件中执行以下操作:

     protected void Page_Load(object sender, EventArgs e)
        {
            Image img = new Image();
            img.ImageUrl = "~/Images/hello.jpg";
            Page.Controls.Add(img);
        }
    

    同样,其他答案也是正确的,但您需要将其答案中的 URL 更改为图片的正确 URL。

    我还注意到您试图在您的代码中创建一个server 对象?您不必创建服务器对象,因为您已经在 Page 控件中拥有它并且可以像 Page.Server 这样访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-25
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2010-10-10
      • 2011-09-06
      相关资源
      最近更新 更多