2012-04-11 13 views
2

Noob WCF/RESTの質問はこちら!
私はシンプルなWebサービス(今のところ一つの方法)を構築する必要があります。私の好みはREST/JSONタイプのアーキテクチャですが、私の場合はこれが実現できるかどうかはわかりません。RESTを使用して画像で複雑なオブジェクトを提供

RESTベースのサービスを使用しているときに、複雑なオブジェクトをJSONとの間でシリアル化/デシリアライズすることは簡単です。私はまだそれをテストしていませんが、それはまたREST-based service to return an imageのために十分に見えます。

しかし、私のシナリオでは、両方の組み合わせを提供する必要があります。以下に返すことができるオブジェクト定義の例です。

class Response 
{ 
    string myTitle; 
    string myDate; 
    Object myImage; 
} 

私はどこにアクセス私は物理的なイメージを格納することができ実現して、単純に文字列としてURLを返しますが、私は限りオーバーヘッドを回避したいと思います可能。

それは可能ですか?あなたはJSONオブジェクトの一部として画像をしたい場合は

はまた、

答えて

0

...それはすべてのクールな子供たちはそれを使用していることを簡単にですが、私はどのような方法でRESTまたはJSONを約束していないよということに注意してくださいシリアライズ可能な型に変換します。最も簡単な方法は、バイト表現を使用することです。

System.Drawing.Image img = System.Drawing.Image.FromFile("filename"); 
byte[] imgContent; 
using (System.IO.MemoryStream m = new System.IO.MemoryStream()) 
{ 
    img.Save(m, img.RawFormat); 
    imgContent = new byte[m.Length]; 
    const int count = 4096; 
    byte[] buffer = new byte[4096]; 
    for (int i = 0; i < m.Length; i += count) 
    { 
     m.Read(buffer, i, (m.Length - i < count ? (int)(m.Length - i) : count)); 
     buffer.CopyTo(imgContent, i); 
    } 
} 
myResponse.myImage = imgContent; 

EDIT: OPが見られるように、書くためにはるかに簡単/迅速な方法があります:あなたがそのリンクは私の質問これに答える考える理由

System.Drawing.Image img = System.Drawing.Image.FromFile("filename"); 
using (System.IO.MemoryStream m = new System.IO.MemoryStream()) 
{ 
    img.Save(m, img.RawFormat); 
    myResponse.myImage = m.ToArray(); 
} 
+0

私はわからないんだけど一方の属性がイメージで残りが文字列である複合オブジェクトを返す方法です。この例は単にイメージを元に戻すことです。 – BlazingFrog

+0

RESTとJSONを使用して3つの属性(2つの文字列と1つの画像)を持つオブジェクトを返すことができるかどうかを調べようとしています。私の元の質問を見てください。 – BlazingFrog

+0

@BlazingFrog回答が更新されました。 –

関連する問題