我正在使用指纹读取器的Android上创建一个应用程序,问题是图像在转换为位图并将其分配给您时是实时的,尺寸为800x750,字节数组大小为600000。 imageview,该应用程序太令人鼓舞且崩溃。 如何减少原始图像字节数组的大小,以便我的应用程序可以毫无问题地绘制指纹
imagePreview.setImageBitmap(imageData.toBitmap());
我尝试了这个,但是还是很慢
Bitmap bmp = imageData.toBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 30, stream);
byte[] byteArray = stream.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inSampleSize = 2;
Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length,options);
答案 0 :(得分:0)
不能。如果您使用的是ARGB_8888,则图像将占用4 *宽*高字节的内存。没有办法减少这种情况。如果遇到问题,请查找内存泄漏并考虑缓存。
答案 1 :(得分:0)
如果要使位图比例相同并减小位图大小。然后通过你的最大值 大小位图。
public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
int width = image.getWidth();
int height = image.getHeight();
float bitmapRatio = (float)width / (float) height;
if (bitmapRatio > 1) {
width = maxSize;
height = (int) (width / bitmapRatio);
} else {
height = maxSize;
width = (int) (height * bitmapRatio);
}
return Bitmap.createScaledBitmap(image, width, height, true);
}