asp.net Webサイトで画像リソースを使用する方法
-
05-07-2019 - |
質問
英語のテキストが埋め込まれた多くの画像を使用する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;" />
ソースは明らかに私が期待したものではないことに注意してください...
解決
リソースファイルに画像のURLを保存し、コントロールで次のインラインコードを使用できます
<asp:Image ImageUrl="<%$resources:Image1 %>" />
更新
このリンクは、あなたが達成しようとしているものに役立つ可能性があります
または
リソースを文字列として保存し、リソースファイルに画像を保存する代わりに、値をURLの場所に設定することもできます。
他のヒント
やろうとしていることの1つは、単純な「イメージサービス」を作成することです。埋め込みリソースから適切な形式で画像を提供できます。
Webサービス自体を作成する必要はありません。単にaspxページを作成し、背後のコードでResponse.ContentTypeを&quot; image / png&quot;に変更します。またはあなたが好むどんなフォーマットでも。これには、ページ自体の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をインポートすることを忘れないでください。
グローバルリソースファイルを使用している場合、このように追加する必要があります
<img id="WelocmeICon" runat="server" alt="welcome icon"
src="<%$resources:NmcResource,WelcomeIcon %>" />
また、imgコントロールを使用しているため、runatserverとidを追加しました