5

C#で画像を転送する最良の方法は何ですか?

  • ビットマップ オブジェクト
  • バイト配列
  • 画像オブジェクト?
4

4 に答える 4

6

唯一の「最善」の方法はありません。あるとすれば、その方法はおそらく 1 つしかないでしょう。それは、あなたの状況、ニーズ、優先順位によって大きく異なります。

とは言っても、楽しく簡単な Base64 エンコーディングをあらゆる機会に使用しています。:)

于 2010-07-24T15:04:09.653 に答える
2

WCF では、メソッドから Stream オブジェクトを返すことができます。

public Stream GetImage(string name)
{ ... }

純粋な SOAP ベースのプロトコルを使用している場合は、byte[] などのプリミティブに固執する必要があります。これはパフォーマンスの低いオプションですが、実際にはより良い方法はありません。これをすべてのクライアントで機能させるには、ファイルを複数の部分に分割する必要がある場合があります。一部の SOAP クライアントは大きな応答を許可しないため、以前は応答を 30,000 個に分割していました。

画像を転送する最善の方法は、上記のいずれの方法も使用せず、画像に対して直接 HTTP 要求を実行し、これらすべてを回避することです。これが現在使用しているもので、エンコーディングもクライアント処理もなしで、ディスクに直接ストリーミングされます。これを適用できるかどうかを判断するには、特定のユース ケースを調べる必要があります。

于 2010-07-24T15:47:08.343 に答える
1

私は最近、WCF サービスを使用してこれを実装し、実装が非常に簡単だったため、ファイルを転送する方法として Byte[] を使用することにしました。

public byte[] DownloadFile(string fileName)
{
    var stream = System.IO.File.OpenRead(fileName);

    byte[] fileContent = new byte[stream.Length];
    stream.Read(fileContent, 0, fileContent.Length);

    return fileContent;
}

上記の例は、ファイル名を WCF サービスに直接渡していないため簡略化されていますが、一般的な考え方は理解できるはずです =)

于 2010-07-24T15:08:47.263 に答える
0

画像への URL のみを返し、クライアントが返された URL に対して生の HTTP 呼び出しを行い、画像をフェッチすることもできます。

ありがとう
VM

于 2010-07-24T20:08:32.947 に答える