2

現在、ASP.Net ASMX Web サービス内の関数を使用して System.Drawing.Image を生成しています。この画像を(pngなどに変換した後)AJAX呼び出しへの応答としてブラウザに渡したいと思います。(jQuery の $.ajax を使用)。私はグーグルをしてきましたが、それが可能であると確信していますが、その方法を見つけることができないようです. 最初にどういうわけかそれをデータURIに変換しますか、それとも何ですか?

4

1 に答える 1

2

私はあなたがそれを行うことができるとは思わない. 画像を返すには、javascript では役に立たないと思う bytearray を返すメソッドが必要です。
私の回避策は、画像を特定の場所に保存し、画像のアドレスをクライアント側に返すことです。

更新: コメントに基づいて、画像のデータを Base64 文字列にエンコードし、ajax コールバックで DATA URI を処理できます。
JSON を使用して base64Encoded データを表すことができ、ajax calklback では次のように記述できます。

$("#myImage").attr("src", "data:image/png;base64,RETURNED_DATA_FROM_ASMX");    

C# で画像を base64 に変換するサンプル コードを次に示します。

public string ImageToBase64(Image image, 
  System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to Base64 String
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

DATA URI をフォーマットする方法については、http://en.wikipedia.org/wiki/Data_URI_scheme#Formatにアクセスしてください。

于 2012-10-03T21:02:22.653 に答える