嗨我想通过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