2013-06-11 11 views
6

Mam dwie bitmapy i tworzę je w onCreate().Jak skopiować bitmapę na inną bitmapę bez użycia funkcji createBitmap() i copy() w systemie Android?

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

bmp1 i bmp2 są takie same. Modyfikuję bmp2 w mojej aplikacji. Po zakończeniu mojej pracy klikam przycisk "Wyczyść". Próbuję skopiować bmp1 (czysty obraz) do bmp2 (zmieniony obraz) po kliknięciu przycisku "Wyczyść". Ale nie chcę używać funkcji createBitmap() lub copy(). Ponieważ są to nowe obiekty Bitmap. Chcę używać tylko moich dwóch bitmap (bmp1 i bmp2). Jak mogę skopiować bmp1 do bmp2? Szukam google, ale zawsze robię to za pomocą createBitmap() lub copy().

Dzięki.

+0

Jak o 'płótnie. drawBitmap() '? – Alan

+0

@Alan, rysuję obraz za pomocą metody drawBitmap(). Po zmodyfikowaniu obrazu (bmp2) potrzebuję czystego obrazu (bmp1). W moim scenariuszu bmp1 jest zawsze czysty, a bmp2 jest zawsze na ekranie. Kiedy potrzebuję czystego obrazu, kopiuję plik bmp1 do bmp2. Ale jak? – dec

+0

Jeśli robisz aplikację do edycji zdjęć lub podobne, możesz użyć 'Canvas' na bmp2 i użyć' Canvas.save() 'i' Canvas.restore() ' – Alan

Odpowiedz

11

I rozwiązać mój problem

Najpierw stworzyłem bmp1, BMP-2 i płótno dla BMP-2:

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

Gdy chcę skopiować bmp1 do BMP-2:

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

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

Co zrobić, jeśli nowa bitmapa powinna mieć rozmiar różnicy i mieć Config.RGB_565? –

Powiązane problemy