从各个角落均匀裁剪位图

Posted

技术标签:

【中文标题】从各个角落均匀裁剪位图【英文标题】:Cropping a bitmap evenly from all corners 【发布时间】:2014-04-23 10:33:25 【问题描述】:

我有一个宽度为 720 和高度为 1020 的位图,我想用相同的值裁剪位图的所有四个角,例如 50。所以从上、左、下和右各 50。这是我在代码中尝试过的方法

sourceImg = Bitmap.createBitmap(sourceImg, 50,
                            50, sourceImg.getWidth() - 50, sourceImg.getHeight() - 50);

顶部和左侧似乎可以正确裁剪,但底部和右侧却没有。

【问题讨论】:

如果顶部和左侧裁剪正确,您似乎只需从最后两个参数中减去 corner,而不是 corner/2 编辑了问题以避免任何混淆。您能解释一下为什么我需要更改从位图中裁剪出来的右侧和底部的值吗? 最后两个参数 IIRC 不是右下角,而是宽度和高度。因此,如果顶部和左侧是 50,并且您想要一个均匀的边框,那么您需要将宽度和高度减少 2 * 50。 【参考方案1】:

您应该使用下面的计算。宽度和高度按角值减小(每边减半)。

sourceImg = Bitmap.createBitmap(sourceImg, 
    corner/2, 
    corner/2, 
    sourceImg.getWidth() - corner, 
    sourceImg.getHeight() - corner);

【讨论】:

现在工作正常。现在我明白了我需要这样做的原因。谢谢

以上是关于从各个角落均匀裁剪位图的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中从位图中裁剪圆形区域

如何从顶部和底部裁剪位图图像?

使用 Path 对象裁剪位图

如何以最少的内存使用裁剪位图?

如何裁剪矩形的软件位图 - UWP

将位图裁剪为特定的宽度和高度,而不会丢失分辨率