我有一张从相机拍摄的位图。我想裁剪图像,使其只留下底部部分。裁剪后的图像应比原始位图的高度低 80%,因此我只需要从左边缘开始的底部部分的 20%。
我在代码中明确地执行此操作,没有任何 Android 裁剪意图。
一张图片来形象化我想要实现的目标:
我已经使用以下代码设法裁剪位图的顶部部分:
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 https://developer.android.com/reference/android/graphics/Bitmap.html#createBitmap(android.graphics.Bitmap,%20int,%20int,%20int,%20int)我的猜测是您需要在下面的行上指定 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%)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)