2010-12-07 4 views
0

SWTを使用してRAWビットマップイメージをJPEGに圧縮します。 BufferedOutputStreamにイメージを書き込んでソケット上にバイトを送信しています。問題は、圧縮に多くの時間がかかることです(arround 150 ms)。全プロセスをスピードアップするための提案は誰にもありますか?バイト配列(SWT)へのイメージ作成/書き込みを高速化

bos.reset(); 
imageLoader.save(bos, SWT.IMAGE_JPEG); 

答えて

0

1つの可能性は、画像を非圧縮形式で送信することです。実効ネットワークスループット率が十分に高い場合は、画像を送信するよりも画像を圧縮するのに時間がかかることがあります。

もう1つの可能性は、プロセスをパイプライン化して、次のイメージを圧縮するのと同時に1つのイメージを送信することです。複数のコアを使用している場合は、複数のスレッドを使用して圧縮を行う価値があります。

フォロー

圧縮が不可欠である場合は、おそらくJPEGにこだわっ最高です。ただし、JPEG圧縮は損失であり、失われた細部は決して回復できないことに注意してください。 (対照的に、試したデフレーターはロスレスでした。)

+0

残念ながら圧縮が必要です。私はまた、Javaのデフラッターを使用しようとしましたが、結果として得られる画像は非常に大きなソース画像に依存していました。また、デフラッティングは、少なくとも同じ時間を費やしました – christian

+0

ありがとう;)私は可逆圧縮と可逆圧縮の違いを知っています。 deflatterはpngに等しいでしょう。 jpegの品質は私たちのニーズに合っています。それは単なるパフォーマンス上の問題です。 – christian

+0

パイプライン処理を試してみてください。 –

関連する問題