onDraw方法中的Android createBitmap

时间:2014-04-30 07:02:34

标签: android bitmap ondraw

我知道不建议在onDraw()方法中创建任何对象,所以我正在寻找另一种方法来解决这个问题。假设我有一个摄像头流,然后使用onPreviewFrame()内的OpenCV库进行一些对象检测。

onDraw()方法中,我需要迭代所有检测到的对象,从输入图像中裁剪它们并缩放它们中的每一个,然后在原始位图上绘制这个裁剪的位图。

我当前的解决方案需要2个位图 - 一个是原始的,另一个用于绘图(我不在原始图像上绘制,因为可能会发生我会从图像中新对象的部分裁剪的东西已经画了。)

@Override
public void onDraw(Canvas canvas) {
  super.onDraw(canvas);

  canvasTmp.setBitmap(mBitmap);

  for (Object o:objects) {
    Bitmap croppedBmp = Bitmap.createBitmap(mBitmapCopy, area_to_crop...);
    croppedBmp Bitmap.createScaledBitmap(croppedBmp , new_size...);
    canvasTmp.drawBitmap(croppedBmp, new_position)
  }

  canvas.drawBitmap(mBitmap, 0, 0, bitmapPaint);    
}

创建mBitmapmBitmapCopy的操作并不像我使用setPixels()方法那么昂贵,但我想知道是否有任何方法可以摆脱每次迭代重新创建的位图?

由于

0 个答案:

没有答案