我有一个c#网站,它使用了大量嵌入英文文本的图片。
如何根据语言使用标准资源文件交换图像?
我的App_GlobalResources目录中有一个resx文件,但我似乎无法将它插入到imageurl的asp:image控件中。
想法?
更新:
有关更多信息,请参阅图像标记代码:
<asp:image runat="server" ID="img2" ImageUrl="<%$Resources: Resource, cs_logo %>" />
客户端的结果是:
<img id="img2" src="System.Drawing.Bitmap" style="border-width:0px;" />
请注意,来源显然不是我所期望的......
答案 0 :(得分:6)
您可以将图像的网址存储在资源文件中,并在控件中使用以下内联代码
<asp:Image ImageUrl="<%$resources:Image1 %>" />
这link可能会对您要完成的工作有所帮助
或
您还可以尝试将资源存储为字符串,并将值设置为url位置,而不是将图像存储在资源文件中。
答案 1 :(得分:3)
您可能尝试做的一件事是创建一个简单的“图像服务”,它可以从嵌入的资源中以适当的格式提供图像。
您不必自己创建Web服务,只需创建一个aspx页面,然后在后面的代码中将Response.ContentType更改为“image / png”或您喜欢的任何格式。这还需要在页面本身的URL中使用get参数,但可以轻松过滤。因此,您的图像服务的Page_Load方法可能如下所示:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim FinalBitmap As Bitmap
Dim strRenderSource As String
Dim msStream As New MemoryStream()
strRenderSource = Request.Params("ImageName").ToString()
' Write your code here that gets the image from the app resources.
FinalBitmap = New Bitmap(Me.Resources(strRenderSource))
FinalBitmap.Save(msStream, ImageFormat.Png)
Response.Clear()
Response.ContentType = "image/png"
msStream.WriteTo(Response.OutputStream)
If Not IsNothing(FinalBitmap) Then FinalBitmap.Dispose()
End Sub
然后返回你的ASPX页面......
<asp:Image ImageUrl="http://localhost/GetImage.aspx?ImageName=Image1" />
哦,不要忘记在页面中导入System.Drawing和System.Drawing.Imaging。
答案 2 :(得分:0)
如果您使用的是全局资源文件,则需要像这样添加
<img id="WelocmeICon" runat="server" alt="welcome icon"
src="<%$resources:NmcResource,WelcomeIcon %>" />
因为我使用img控件我添加了runatserver和id