android中的位图转换为字节数组可以使用以下代码:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.test_image);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
但是,如果在不同型号的Android设备上运行代码,可能会发现生成的字节数组大小不同。
这是可能由于不同设备的像素密度不同,以及针对不同型号的设备Android会采用不同的压缩方法导致的。
因此,解决这个问题的一种方法是在压缩格式中指定适当的压缩质量,具体取决于所用设备的像素密度。例如:
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.test_image);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
int quality = 100;
if (getResources().getDisplayMetrics().densityDpi == DisplayMetrics.DENSITY_HIGH) {
quality = 80;
}
bmp.compress(Bitmap.CompressFormat.PNG, quality, stream);
byte[] byteArray = stream.toByteArray();
以上代码将根据不同的设备像素密度使用不同的压缩质量,从而生成相同大小的字节数组。