2013-06-11 3 views
6

У меня есть два растровых изображения, и я их создаю в onCreate().Как скопировать растровое изображение в другое растровое изображение без использования createBitmap() и copy() на Android?

Bitmap bmp1 = BitmapFactory.decodeResource(getResources(),id); 
Bitmap bmp2 = BitmapFactory.decodeResource(getResources(),id); 

bmp1 и bmp2 - это то же самое. Я изменяю bmp2 в своем приложении. После выполнения моей работы нажмите кнопку «Очистить». Я пытаюсь скопировать bmp1 (чистое изображение) в bmp2 (измененное изображение), когда я нажимаю кнопку «Очистить». Но я не хочу использовать функцию createBitmap() или copy(). Потому что они создают новые объекты Bitmap. Я хочу использовать только два моих растровых изображения (bmp1 и bmp2). Как я могу скопировать bmp1 в bmp2? Я ищу google, но всегда делаю это с помощью createBitmap() или copy().

Спасибо.

+0

Как насчет 'Canvas. drawBitmap() '? – Alan

+0

@Alan, я рисую свое изображение с помощью drawBitmap(). После изменения изображения (bmp2) мне нужно чистое изображение (bmp1). В моем сценарии bmp1 всегда остается чистым, а bmp2 всегда отображается на экране. Когда мне нужно чистое изображение, я копирую bmp1 в bmp2. Но как? – dec

+0

Если вы создаете приложение для редактирования фотографий или похожи, вы можете использовать 'Canvas' на bmp2 и использовать' Canvas.save() 'и' Canvas.restore() ' – Alan

ответ

11

я решил мою проблему

Сначала я создал bmp1, Bmp2 и холст для BMP2:

bmp1 = BitmapFactory.decodeResource(cont.getResources(), R.drawable.image); 
bmp2 = bmp1.copy(bmp1.getConfig(), true); 
canvasBmp2 = new Canvas(bmp2); 

Когда я хочу, чтобы скопировать bmp1 в BMP2:

canvasBmp2.drawBitmap(bmp1, 0, 0, null); 

@Override 
protected void onDraw(Canvas canvas) 
{ 
    canvas.drawBitmap(bmp2, 0, 0, null); 
} 
+0

Что делать, если новый битмап должен быть разным и иметь Config.RGB_565? –

Смежные вопросы