2013-06-11 25 views
6

Tôi có hai bitmap và tạo chúng trong onCreate().Làm thế nào tôi có thể sao chép bitmap sang bitmap khác mà không cần sử dụng createBitmap() và sao chép() trên Android?

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

bmp1 và bmp2 giống nhau. Tôi sửa đổi bmp2 trong ứng dụng của tôi. Sau khi công việc của tôi được thực hiện, tôi nhấp vào nút "Clear". Tôi đang cố gắng để sao chép bmp1 (hình ảnh sạch) để bmp2 (thay đổi hình ảnh) khi tôi nhấp vào "Clear" nút. Nhưng tôi không muốn sử dụng hàm createBitmap() hoặc copy(). Bởi vì đây là những đối tượng Bitmap mới. Tôi chỉ muốn sử dụng hai bitmap của mình (bmp1 và bmp2). Làm thế nào tôi có thể sao chép bmp1 để bmp2? Tôi tìm kiếm google nhưng everbody làm điều này với createBitmap() hoặc copy().

Cảm ơn.

+0

Làm thế nào về 'Canvas. drawBitmap() '? – Alan

+0

@Alan, tôi vẽ hình ảnh của mình bằng drawBitmap(). Sau khi tôi sửa đổi hình ảnh (bmp2) tôi cần hình ảnh sạch (bmp1). Trong kịch bản của tôi bmp1 giữ luôn luôn sạch sẽ và bmp2 luôn luôn trên màn hình. Khi tôi cần ảnh sạch, tôi sao chép bmp1 thành bmp2. Nhưng bằng cách nào? – dec

+0

Nếu bạn đang tạo ứng dụng chỉnh sửa ảnh hoặc giống nhau, bạn có thể sử dụng 'Canvas' trên bmp2 và sử dụng' Canvas.save() 'và' Canvas.restore() ' – Alan

Trả lời

11

tôi giải quyết vấn đề của tôi

Trước tiên tôi tạo bmp1, bmp2 và vải cho bmp2:

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

Khi tôi muốn sao chép bmp1 để bmp2:

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

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

Điều gì xảy ra nếu, Bitmap mới phải ở kích thước khác biệt và có Config.RGB_565? –

Các vấn đề liên quan