Android デバイスから PC で実行されている Java アプリに画像を送信するアプリを作成しています。クライアント側(Android)の画像は で、ブルートゥース経由でサーバーに送信するためにBitmap
に変換します。Byte Array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
mBluetoothService.write(b);
ビットマップは既に圧縮されたファイルから取得されるため、再度圧縮する必要はありません。
サーバー(Java)で次のコードを使用します。
byte[] buffer = new byte[1024*1024];
int bytes;
bytes = inputStream.read(buffer);
ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
BufferedImage image = ImageIO.read(bais);
ImageIO.write(image, "jpg", new File("c:/users/image.jpg"));
クライアント側にエラーはありません。しかし、サーバー側(Javaアプリ)でこの例外が発生します:
java.lang.IllegalArgumentException: im == null!
javax.imageio.ImageIO.write (不明なソース) で
javax.imageio.ImageIO.write (不明なソース) で
com.luugiathuy.apps.remotebluetooth.ProcessConnectionThread.run (ProcessConnectionThread.java:68) で
java.lang.Thread.run で (不明なソース)
したがって、ImageIO.read()
何も返されません。バイト配列を画像として認識していないようです。インターネットで検索しましたが、これを解決するのに役立つものは何もありません。誰にもアイデアはありますか?
どうもありがとう!!