我有一个从相机中取出的位图.我想裁剪图像,使其只留下它的底部.裁剪后的图像应该比原始位图的高度低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);
Run Code Online (Sandbox Code Playgroud)
但我找不到从顶部开始裁剪80%的方法.我正在考虑获取Bitmap的y坐标,这样我就可以裁剪任何图像尺寸,并且只能获得底部部分.但有人能指出我如何从位图获取此坐标?或者我必须从布局本身中取出它?
Har*_*ryS 11
我不熟悉Bitmaps上的操作,但是通过检查代码并查看API,我猜你需要在下一行指定y坐标以匹配起点:
Bitmap croppedBitmap = Bitmap.createBitmap(toBeCropped, 0, "here", toBeCropped.getWidth(), fromHere);
Run Code Online (Sandbox Code Playgroud)
所以我的猜测将如下所示:
Bitmap croppedBitmap = Bitmap.createBitmap(toBeCropped, 0, (toBeCropped.getHeight() * 0.8), toBeCropped.getWidth(), fromHere);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,fromHere将定义要裁剪的行数而不是起点(这是您指出的总数的20%)
| 归档时间: |
|
| 查看次数: |
6092 次 |
| 最近记录: |