gpt4 book ai didi

android - 以编程方式裁剪位图的底部

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:01:55 26 4
gpt4 key购买 nike

我有一张从相机拍摄的位图。我想裁剪图像,使其只留下底部部分。裁剪后的图像应比原始位图的高度低 80%,因此我只需要底部从左边缘开始的 20%。

我在代码中明确地这样做,没有任何 Android 裁剪 Intent 。

形象化我想要实现的目标的图像:

crop this

我已经使用这段代码成功地裁剪了位图的顶部:

final Bitmap toBeCropped = BitmapFactory.decodeFile(mFile.getPath());

final BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inTargetDensity = 1;
toBeCropped.setDensity(Bitmap.DENSITY_NONE);

int fromHere = (int) (toBeCropped.getHeight() * 0.2);
Bitmap croppedBitmap = Bitmap.createBitmap(toBeCropped, 0, 0, toBeCropped.getWidth(), fromHere);
mPreviewHalf.setImageBitmap(croppedBitmap);

但我找不到从顶部开始裁剪 80% 的方法。我正在考虑获取位图的 y 坐标,以便我可以裁剪任何图像尺寸并始终只获取底部部分。但是谁能告诉我如何从位图中获取这个坐标?还是我必须从布局本身获取它?

最佳答案

我不熟悉位图上的操作,但通过检查您的代码并查看 API我的猜测是您需要在下一行中指定 y 坐标以匹配起点:

Bitmap croppedBitmap = Bitmap.createBitmap(toBeCropped, 0, "here", toBeCropped.getWidth(), fromHere);

所以我的猜测应该是这样的:

Bitmap croppedBitmap = Bitmap.createBitmap(toBeCropped, 0, (toBeCropped.getHeight() * 0.8), toBeCropped.getWidth(), fromHere);

在这种情况下,fromHere 将定义您要裁剪的行数,而不是起点(如您所指出的,它是总数的 20%)

关于android - 以编程方式裁剪位图的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39034444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com