2011-12-05 9 views
4

私はクライアントサーバーアプリケーションを持っています。サーバーは純粋なJavaであり、クライアントはAndroidアプリケーションです。それらは、ServerSocketを使用してTCPを介して通信します。JavaアプリケーションからAndroidアプリケーションに画像を送信するにはどうすればよいですか?

サーバ上にイメージを作成し、それを編集して(たとえば、その上に線を引いて)、それをクライアントに送信して、そこにビットマップとして表示することができます。

私の最初のアプローチは、アンドロイド環境の外でAndroidライブラリを使用することはできないので、android.graphics.Bitmapライブラリをサーバーにインポートして使用することでしたが、これはうまくいきません。

私のアプローチは、サーバー上でBufferedImageを使用することですが、問題は、クライアントがビットマップを再構築できる方法でこれをシリアル化する方法を見つけることができないことです。私はImageIO.writeを使ってみましたが、クライアント側で何をする必要がありますか?

これを解決する方法を知っている人はいますか、それとも良い方法がありますか? 私はあなたの助けに感謝します。

答えて

1

すべてのPNGまたはJPG画像は、BitmapFactoryクラスを使用してAndroidでデコードできます。イメージのInputStreamを取得し、BitmapFactory.decodeStream(inputStream)を使用してください。特別にシリアル化する必要はありません...画像のバイトを送信するだけです。

+0

ありがとう、 'BitmapFactory'は私が探していたものでした。サーバー側では 'ImageIO.write(image、" PNG "、out);' – Waboodoo

0

クライアントAndroidアプリケーションでバイトの生ストリームを取得するには2通りの方法があります。 getPixelsを使用して

  1. copyPixelsToBuffer機能を使用して

getPixels機能簡単で、あなたの基本的な生のバイトを提供します。 copyPixelsToBufferをバッファーにコピーします。

生のバイトを取得したら、サーバーに送信します。ここでは、サーバー側のJavaでは、ImageJなどのライブラリを使用して、生のバイトストリームをImageに変換し、処理し、元に戻してAndroidに送り返すことができます。

クライアントアプリケーションがraw_streamを受信すると、setPixels関数またはcopyPixelsFromBuffer関数を使用してandroid.graphics.Bitmapに再度変換します。

関連する問題