【问题标题】:cut the portion of bitmap [duplicate]剪切位图的部分[重复]
【发布时间】:2011-07-22 21:28:52
【问题描述】:

可能重复:
How to crop the parsed image in android?

我已经从位图中选择了一部分,我正在将选定的部分复制到同一个位图中。现在我想在复制后删除选定的部分。怎么做?请帮帮我..

【问题讨论】:

  • @Bill-the-Lizard:这不是一个重复的问题。

标签: android android-layout


【解决方案1】:

万一有人试图解决同样的问题,有一个更好的解决方案:Bitmap.createBitmap(Bitmap, int x, int y, int width, int height)。例如,如果您需要从位图的每一侧裁剪 10 个像素,则使用以下命令:

Bitmap croppedBitmap = Bitmap.createBitmap(originalBitmap, 10, 10, originalBitmap.getWidth() - 20, originalBitmap.getHeight() - 20);

【讨论】:

  • 太棒了!对我来说更好的方法:)
  • 如何从动态位图(从相机捕获的位图)中提取矩形?
  • 没有得到你的问题。同样的方法也可以——裁剪位图与从中提取矩形相同
  • @a.ch.我想用位图切割图像上的一些顶部区域......有什么解决方案吗?
  • 有没有类似的东西从一个位图复制到另一个,而不是分配一个新的位图?
【解决方案2】:

我知道的最简单的方法是使用 Graphics 包中的 XFer 模式处理。下面的函数将从 (30,30) 到 (100,100) 的区域切割为从资源加载的 320x480 图像。适应坐标动态变化:

private Bitmap cropBitmap1() {
    Bitmap bmp2 = BitmapFactory.decodeResource(this.getResources(), R.drawable.image1); 
    Bitmap bmOverlay = Bitmap.createBitmap(320, 480, Bitmap.Config.ARGB_8888);

    Paint paint = new Paint();
    paint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));

    Canvas canvas = new Canvas(bmOverlay); 
    canvas.drawBitmap(bmp2, 0, 0, null); 
    canvas.drawRect(30, 30, 100, 100, paint);

    return bmOverlay;
}

【讨论】:

  • 嘿,这将清除整个位图。我只想在复制后清除选定的部分。
  • 不是全部,只是部分。试试看,你会看到的。我在发布之前检查了代码。
  • 好的,我现在就试试这个
  • 谢谢Zelimir :) 它正在工作
  • 这里是 p.setXfermode(new PorterDuffXfermode(Mode.CLEAR));它显示一个错误,将语句分配给一个新的局部变量(CLEAR)这是什么
猜你喜欢
  • 2015-11-05
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 2021-07-28
  • 2012-10-28
相关资源
最近更新 更多