圧縮は、コースにとって非常に馬です:最初の場所で画像がどこから来たかによって、どの方法が実際にうまくいくのですか?また、あなたの要件は何ですか(主に、損失圧縮を許可するかどうか、あなたはそれに置く)。 ImageIO.write()を使用して、JPEGまたはPNG形式の画像をByteArrayOutputStreamに書き込んで、その結果のバイト配列をソケット[1]に送信できます。それがあなたに受け入れられる結果をもたらすならば、利点は、それは開発時間が無駄になるということです。
損失のある圧縮を使用できないため、またはPNG圧縮で許容される圧縮率が得られないために、許容できる結果が得られない場合は、適切な結果が得られない場合は、データ;その時点で。あなたは一日の終わりにあなたのデータを知っているだけですが、一般的なテクニックは、デフラータや他の標準的なアルゴリズムでうまく動作するような形でデータを取得しようとすることです。たとえば、デフレーターでは、データの変換/並べ替えを行い、類似したバイトの繰り返しパターンと実行がお互いに近くなるようにします。つまり、ピクセルの上位ビットすべてを送信し、次にすべての次のビットなどを送信し、事実上ノイズだけであれば、実際には各コンポーネントの下位ビットを送信しないことを意味します。
JPEG/PNGオプションを使用すると、必要な結果が得られますので、それ以上の心配はありません。
[1]申し訳ありませんが、あなたは明らかに画像データが書き込まれているものをソケット出力ストリームにすることができます。 。