Я соединяю два изображения, используя приведенный ниже код, но он выдает ошибку OutOfMemory
. Мои изображения составляют около 1 МБ.
private Bitmap overlayMark(String first, String second)
{
Bitmap bmp1, bmp2;
bmp1 = BitmapFactory.decodeFile(first);
bmp2 = BitmapFactory.decodeFile(second);
if (bmp1 == null || bmp2 == null)
return bmp1;
int height = bmp1.getHeight();
if (height < bmp2.getHeight())
height = bmp2.getHeight();
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth() + bmp2.getWidth(), height,
Bitmap.Config.ARGB_8888);// Out of memory
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, 0, 0, null);
canvas.drawBitmap(bmp2, bmp1.getWidth(), 0, null);
bmp1.recycle();
bmp2.recycle();
return bmOverlay;
}
Обновление:. Я пробовал два ответа, но мне все равно не нравится создавать растровые изображения такого большого размера, проблема в том, что результирующая растровая карта слишком большая по размеру около 2400x3200, поэтому ее выход из памяти.
Как подключиться к большим изображениям без исчерпания памяти?