次のコードを使用して、Silverlight Canvas から形成された大きなサイズの byte[] があります。
var img = new WriteableBitmap(cnvControlHolder, null);
var outStream = new MemoryStream();
EncodeJpeg(img, outStream);
これをWCFサービスに送信して、このバイト配列から画像を形成し、サーバー側で画像として保存して、SSRSで使用できるようにします。私の問題は、バイト[]が大きいため、WCFサービスから見つからない古典的なメソッドを取得することです。
WCF ストリーミングが 1 つのオプションになるといういくつかのリンクを読みましたが、ネット上でサンプルを見つけることができませんでした。私のサービス方法は次のようなものです:
public bool Upload(Stream image)
{
FileStream fileStream = null;
BinaryWriter writer = null;
var filePath = HttpContext.Current.Server.MapPath(".") + @"\" +
ConfigurationManager.AppSettings["PictureUploadDirectory"] + @"\Diagram.jpeg";// +image.ImageName;
if (image!=null)
{
//return ByteArrayToFile(filePath, image.Imagestream);
fileStream = File.Open(filePath, FileMode.Create);
writer = new BinaryWriter(fileStream);
writer.Write("Diagram.jpeg");
}
return false;
}
and client call is this :
var img = new WriteableBitmap(canvas1, null);
var outStream = new MemoryStream();
EncodeJpeg(img, outStream); //custom library to compress into jpeg
var client = new Service1Client();
client.UploadCompleted += new EventHandler<UploadCompletedEventArgs>(client_UploadCompleted);
client.UploadAsync(outStream.ToArray());
私の問題を解決するためのサンプルやその他の解決策を誰かが提案できますか?