私はc#.netでJPEG画像をシリアライズしています。私は単純にバイトスチームに変換し、Webサービスを通じて送信しています。シリアル化されたバイトストリームは実際のイメージのサイズの30倍以上であることがわかりました。私は、実際のイメージのサイズに比例してシリアライズして滞在するより良いアプローチを提案する人はいますか?イメージをよりコンパクトにシリアル化するにはどうすればよいですか?
答えて
免責事項:たぶん、あなたはデータパケットにプロトコルオーバーヘッドバイトの多くを追加するSOAPのようなものを使用している
そのオープン性/標準規格と性能の間のトレードオフ...を話す非通知人。サイズが重大な制約である場合は、純粋なバイナリストリームとして送信してみてください...実際の構文は他の誰かがピッチする可能性があります。
JPEGは圧縮技術であり、それを読み込みます。これはファイル形式の性質です。最初に画像として読み取らずに元のJPEGファイルを送信する方法を見つけてください。
「それを読んだら、大きく拡大するのはなぜですか? – Indy9000
@Indeera、画像としてJPEGファイルを読み込むと、メモリに圧縮されなくなります。たとえば、Windowsのサンプル・イメージTulips.jpgは、ディスク上では620K、メモリ内では2359Kです。 JPEGを作成するときに適用される圧縮パラメータと、非圧縮画像にアルファチャンネルがあるかどうかによって、その差はそれよりはるかに大きくなる可能性があります。それは結局のところ圧縮の全体的なポイントです。 –
- 元のイメージストリームをFileStreamで読み取ってから、MemoryStreamを使用してシリアライザに渡す必要があります。
- Imageクラスのみを使用できる場合は、受信しているバイト配列の出力形式を指定してください。
webservicesで送信する画像のサイズが大きい場合は、MTOMを参照してください。バイナリ添付ファイルでメッセージのサイズを最適化するのはWS- *標準です。現在、非常にJava用または.NETでのAxis2やメトロなどのスタックに統合されている:
http://msdn.microsoft.com/en-us/library/aa528822.aspx http://msdn.microsoft.com/en-us/library/ms733742.aspx(3.0 WSE)(WCF)
なぜBase64Stringに変換しませんか?もう一方の端に
byte[] arr = File.ReadAllBytes(filename);
string str = Convert.ToBase64String(arr);
あなたが行くことによって、[]バックバイトに、それを変更することができます。
byte[] arr = Convert.FromBase64String(string);
これをしないでください。エンコードの別のレイヤーを追加するだけでサイズを増やすことができます。 –
多分ちょうど、Webサーバー上の画像をホストし、むしろ、Webサービスの応答にURLを送りますシリアライズされたイメージよりもこれにより、クライアントはできるだけイメージをローカルにキャッシュすることができます。
- 1. オブジェクトをXDocumentにシリアル化するにはどうすればよいですか?
- 2. MongoDB.Bsonでカスタムコレクションをシリアル化するにはどうすればよいですか?
- 3. JavaでAttributedStringをシリアル化するにはどうすればよいですか?
- 4. XMP XMLブロックを既存のJPEGイメージにシリアル化するにはどうすればよいですか?
- 5. メールメッセージをシリアル化するにはどうすればよいですか?
- 6. Jsonオブジェクトを逆シリアル化するにはどうすればよいですか?
- 7. Googleニュースサイトマップフィードを逆シリアル化するにはどうすればよいですか?
- 8. 動的オブジェクトをシリアル化するにはどうすればよいですか?
- 9. de-proxyオブジェクトをJsonにシリアル化できるようにするには、どうすればよいですか?
- 10. アイテムフィールドをシリアル化しないようにScrapyに指示するにはどうすればよいですか?
- 11. XmlSerializerでコンテナタグをシリアル化しないようにするにはどうすればよいですか?
- 12. このようにJSONの変数プロパティを逆シリアル化するにはどうすればよいですか?
- 13. このようなJSONをシリアル化して解析するにはどうすればよいですか?
- 14. Silverlightで読み取り専用オブジェクトをシリアル化するにはどうすればよいですか?
- 15. シリアル化可能な(マーカーインターフェイス)クラスでフィールドをシリアル化しないようにするにはどうすればよいですか?
- 16. どのようにコードをコンパクト化できますか
- 17. このシリアル化されていないデータにアクセスするにはどうすればよいですか?
- 18. latin1テーブルをシリアル化された値でutf8に変換するにはどうすればよいですか?
- 19. Google Gsonのようなオブジェクトはコンパクトなバイナリ形式にシリアル化しますか?
- 20. UIPickerViewをイメージのように見えるようにするにはどうすればよいですか?
- 21. CSVをシリアル化およびデシリアライズするにはどうすればよいですか?
- 22. numpyでこのイメージの繰り返しを最適化するにはどうすればよいですか?
- 23. JSON形式を新しいJSONファイルにシリアル化するにはどうすればよいですか?
- 24. ブートストラップで、イメージをドロップダウンにするにはどうすればよいですか?
- 25. JSONシリアル化中にlocaldatetimeにサーバーのタイムゾーンを追加するにはどうすればよいですか?
- 26. JSONをC#ディクショナリに逆シリアル化するにはどうすればよいですか? HERESに私のJSONオブジェクト
- 27. ViewModelをXMLにシリアル化してリモートサーバーに送信するにはどうすればよいですか?
- 28. C#でシリアル化中に配列に属性を与えるにはどうすればよいですか?
- 29. .xsdスキーマなしでデータをXMLにシリアル化するにはどうすればよいですか?
- 30. ASP.NET 2.0でDataTableをJSONにシリアル化するにはどうすればよいですか?
バイストリームが30倍大きくなったのをどのように観察しましたか? –