我可以将字节数组转换为位图,但反向相同的过程会产生空值

I can convert a byte array to Bitmap but the same process in reverse produces a null

所以我有一个字节数组,我可以使用以下函数将其转换为位图:

private Bitmap getBitMapFromByte(byte[] imageByte) {
        Bitmap bitmap = BitmapFactory.decodeByteArray(imageByte, 0, imageByte.length);
        return bitmap;
    }

这会产生正确的结果,我可以在调试查看器中预览返回的位图。

然后我有一些中间函数需要图像在字节数组中 byte[]。所以我将位图转换为 byte[] 使用:

int byteCount = myBitmapImage.getAllocationByteCount();
ByteBuffer buffer = ByteBuffer.allocate(byteCount); //Create a new buffer
myBitmapImage.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
byte[] myByte = buffer.array();

现在相同的字节数组立即转换回位图产生一个空值

Bitmap testBitmap= BitmapFactory.decodeByteArray(myByte, 0, myByte.length);

为什么字节数组会立即转换回位图并返回 null?

要将位图转换为字节数组,请使用以下代码

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] imageBytes = baos.toByteArray();

要将字节数组转换为位图,请使用以下代码

Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, bitmapdata.length);