我有一个图像,我把它变成一个字节数组。然后我用AES加密这个字节数组,我希望显示一个代表这种加密的可视结果。
问题是所有的头文件和元信息都是加密的,因此这个传递给byteToImage()的加密字节数组不会被识别为图像的有效表示,即decodeByteArray()返回null。
我已经尝试切断原始图像的前512个字节并将其重新附加到加密字节数组的开头,希望这将恢复标头信息 - 但它没有工作。我有.png和.bmp图像。理想情况下我想要的是一种在android中表示RAW图像并将这个信息字节加密为字节的方法 - 不需要摆弄标题等。
我真的很感激任何帮助。
private static byte[] imageToBytes(ImageView iv){
byte[] imageInByte = null;
Bitmap originalImage;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
BitmapDrawable drawable = (BitmapDrawable) iv.getDrawable();
originalImage = drawable.getBitmap();
originalImage.compress(Bitmap.CompressFormat.PNG, 0, baos); // was 70
imageInByte = baos.toByteArray();
return imageInByte;
}
private static Bitmap bytesToImage(byte data[]) {
// byte[] x = Base64.decode(data, Base64.DEFAULT); using x in place of data also fails
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
return bmp;
}
答案 0 :(得分:0)
你的想法不会奏效。如果只加密位图字节数组的大量字节,则会拆除其结构,之后就不再有位图了。所以你无法显示它。如果您希望能够显示加密的'然后以像素方式执行。看看Bitmap.getPixel()/ setPixel()或Bitmap.getPixels()/ setPixels()。