JPEG
で画像をシリアル化していc#.net
ます。私は単にそれをバイトストリームに変換し、Web サービスを介して送信しています。
シリアル化されたバイト ストリームは、実際の画像のサイズの 30 倍以上であることがわかりました。シリアル化して実際の画像のサイズに相対的に維持するため のより良いアプローチを提案できる人はいますか?
JPEG
で画像をシリアル化していc#.net
ます。私は単にそれをバイトストリームに変換し、Web サービスを介して送信しています。
シリアル化されたバイト ストリームは、実際の画像のサイズの 30 倍以上であることがわかりました。シリアル化して実際の画像のサイズに相対的に維持するため のより良いアプローチを提案できる人はいますか?
JPEGは圧縮技術であり、読み込むと大幅に拡張されることが期待されます。これがファイル形式の性質です。最初に画像として読み取らずに、元のJPEGファイルを送信する方法を見つけてください。
たぶん、Webサーバーで画像をホストし、シリアル化された画像ではなく、Webサービスの応答でURLを送信するだけです。これにより、クライアントは可能な場合に画像をローカルにキャッシュすることもできます。
免責事項:知識のない人が話す
オープン性/標準とパフォーマンスの間のトレードオフ..データパケットに多くのプロトコルオーバーヘッドバイトを追加するSOAPのようなものを使用している可能性があります。サイズが重要な制約である場合は、純粋なバイナリストリームとして送信してみてください...実際の構文は、他の誰かが提案できる可能性があります。
また、Web サービスで送信する画像のサイズが大きくなる可能性がある場合は、MTOM を検討してみてください。バイナリ添付のメッセージのサイズを最適化するのは WS-* 標準です。Java 用の Axis2 や Metro などのスタック、または .NET に非常に統合されています。
http://msdn.microsoft.com/en-us/library/aa528822.aspx (wse 3.0) http://msdn.microsoft.com/en-us/library/ms733742.aspx (wcf)
それを Base64String に変換してみませんか?
byte[] arr = File.ReadAllBytes(filename);
string str = Convert.ToBase64String(arr);
もう一方の端では、次のように変更して byte[] に戻すことができます。
byte[] arr = Convert.FromBase64String(string);