嗨我想通過tcp套接字將我的Java應用程序上的BufferedImage發送到Android設備。我目前從BufferedImage中獲取一個字節[]中的柵格,然後通過普通的OutputStream將其傳送到設備。這工作正常,我在Android端獲得相同的字節數組。但是,當我調用Bitmap.decodeByteArray()時,我只會得到空值。將Java BufferedImage發送到位圖Android
這是我必須發送我的圖片在Java中的代碼。 BufferedImage的圖像類型是TYPE_4BYTE_ABGR
byte[] imgBytes = ((DataBufferByte)msg.getImage().getData().getDataBuffer()).getData();
lineBytes = (String.valueOf(imgBytes.length) + '\n').getBytes();
out.write(lineBytes);
out.write(imgBytes);
out.write((int)'\n');
out.flush();
我寫出來的第一件事就是圖像的大小,所以我知道有多大,使Android上的byte []。
下面是我正在嘗試用來創建Android位圖的代碼。
currLine = readLine(in);
int imgSize = Integer.parseInt(currLine);
byte[] imgBytes = new byte[imgSize];
in.read(imgBytes);
BitmapFactory.Options imgOptions = new BitmapFactory.Options();
imgOptions.inPreferredConfig = Bitmap.Config.ARGB_4444;
Bitmap img = BitmapFactory.decodeByteArray(imgBytes, 0, imgSize, imgOptions);
字節到達罰款..他們只是不工作的位圖。
您可能不想*解碼數組,因爲字節不是首先編碼的。這只是「原始」像素。您還需要傳遞高度和寬度以正確重構圖像。嘗試一下'Bitmap.createBitmap'方法。 – haraldK 2015-04-06 16:04:38