Я создаю приложение на Android, которое использует считыватель отпечатков пальцев, проблема в том, что изображения находятся в реальном времени, с размерами 800x750 и размером массива байтов 600000, при преобразовании его в растровое изображение и назначении его в просмотре изображений, приложение слишком обнадеживает и дает сбой. как я могу уменьшить размер этого массива байтов, который является необработанным изображением, чтобы мое приложение могло без проблем рисовать отпечатки пальцев
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);




Вы не можете. Если вы используете ARGB_8888, изображение займет в памяти 4 байта * ширина * высота. Нет никакого способа уменьшить это. Если у вас возникли проблемы, поищите утечки памяти и рассмотрите возможность кэширования.
если вы хотите, чтобы соотношение растровых изображений было таким же, и уменьшите размер растрового изображения. тогда передай свой максимум размер растрового изображения.
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);
}