我正在製作一個應用程序,將圖像從android設備發送到在PC上運行的java應用程序。客戶端(android)上的圖像是Bitmap
,我將它轉換爲Byte Array
以便通過藍牙將其發送到服務器。通過藍牙將圖像從android發送到PC
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()
不返回任何東西。它好像不能將字節數組識別爲圖像。我在互聯網上搜索,但沒有任何幫助我解決這個問題。有人有什麼主意嗎?
非常感謝!
請發佈您的錯誤日誌 –
java.lang.IllegalArgumentException:im == null! \t在javax.imageio.ImageIO.write(未知來源) \t在javax.imageio.ImageIO.write(未知來源) \t在com.luugiathuy.apps.remotebluetooth。ProcessConnectionThread.run(ProcessConnectionThread.java:68) \t at java.lang.Thread.run(Unknown Source) – daao87
編輯您的問題併發布您的整個logcat,以便社區成員可以幫助您,而不僅僅是部分 –