【问题标题】:How can I copy bitmap to another bitmap without using createBitmap() and copy() on Android?如何在 Android 上不使用 createBitmap() 和 copy() 将位图复制到另一个位图?
【发布时间】:2013-06-11 12:45:05
【问题描述】:

我有两个位图,我在 onCreate() 中创建它们。

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

bmp1 和 bmp2 相同。我在我的应用程序中修改了 bmp2。完成工作后,我单击“清除”按钮。当我单击“清除”按钮时,我试图将 bmp1(干净的图像)复制到 bmp2(更改的图像)。但我不想使用 createBitmap() 或 copy() 函数。因为这些都是创建新的 Bitmap 对象。我只想使用我的两个位图(bmp1 和 bmp2)。如何将 bmp1 复制到 bmp2?我搜索谷歌,但每个人都用 createBitmap() 或 copy() 来做这个。

谢谢。

【问题讨论】:

  • Canvas.drawBitmap() 怎么样?
  • @Alan,我用 drawBitmap() 绘制图像。修改图像(bmp2)后,我需要干净的图像(bmp1)。在我的场景中,bmp1 始终保持干净,bmp2 始终在屏幕上。当我需要干净的图像时,我将 bmp1 复制到 bmp2。但是怎么做呢?
  • 如果你正在制作照片编辑应用或类似应用,你可以在bmp2上使用Canvas,并使用Canvas.save()Canvas.restore()
  • 谢谢@Alan。但我是安卓新手。你能举个例子吗。我使用 surfaceView 进行图像修改。我应该如何使用它?

标签: android bitmap


【解决方案1】:

我的问题解决了

首先我为 bmp2 创建了 bmp1、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);
}

【讨论】:

  • 如果新的位图大小不同并且有 Config.RGB_565 怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 2013-07-24
相关资源
最近更新 更多