gpt4 book ai didi

asp.net-mvc - 如何利用MVC中的常用图片资源

转载 作者:行者123 更新时间:2023-12-02 22:29:23 25 4
gpt4 key购买 nike

我有几个 ASP.NET MVC3 和 4 网站。所有站点都使用独立于图书馆的相同资源。资源是 .resx 文件。我想在这些网站的 html 中使用来自这些资源的图像。我之前没有使用过 resx 文件,所以不确定使用它们的好方法是什么。我想我可能会创建一个服务来从正确的资源文件中提供正确的图像,但我想应该有更好的方法。我的问题是从 resx 文件中使用这些图像的好方法是什么?将图像存储在 resx 中可能不是很好?

最佳答案

一个简单的方法是向 Controller 添加一个 FileStreamResult 操作,它应该根据资源键返回图像。

public FileStreamResult Image(string key)
{
var bitmap = (Bitmap)Resources.Images.ResourceManager.GetObject(key);
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, ImageFormat.Png);
stream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(stream, "image/png");
}

现在您应该能够像这样从您的 View 中访问它:

<img src='@Url.Action("Image", "MyController", new { key = "Image1" })' />

另一种方法(可以仅使用 View 来完成)是创建一个 base 64 编码字符串。

@{
var stream = new MemoryStream();
var bitmap = Resources.Images.ResourceManager.GetObject("Image1") as System.Drawing.Bitmap;
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Seek(0, SeekOrigin.Begin);
string base64 = Convert.ToBase64String(stream.ToArray());
}

<img src="data:image/gif;base64,@base64" />

实现这一点的一个好方法可能是使用 Razor 助手,以在 View 中启用更直接的语法 @Html.GetImageFor(Resources.Images.Image1, "alt")

public static MvcHtmlString GetImageFor(this HtmlHelper helper, Bitmap bitmap, string AltText = "")
{
MemoryStream stream = new MemoryStream();
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Seek(0, SeekOrigin.Begin);
string base64 = Convert.ToBase64String(stream.ToArray());

return new MvcHtmlString(
string.Format("<img src='data:image/gif;base64,{0}' alt='{1}' />",
base64, AltText)
);
}

<子>注意:.ResX 文件的属性应设置如下(对于 MVC 项目来说是正常的):

  • CustomTool 设置为 PublicResXFileCodeGenerator
  • Custom Tool Namespace 设置为 Resources

关于asp.net-mvc - 如何利用MVC中的常用图片资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12523098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com