Android:将图像裁剪为特定大小

4

我的意图是让用户从相册中选择一张图片,然后启动裁剪活动。但是,我需要定义裁剪遮罩的矩形锁定到特定的尺寸,然后用户只需重新调整位置以显示图像的一部分。

有什么好的想法吗?

谢谢

-T


请查看以下链接:https://dev59.com/LWnWa4cB1Zd3GeqPy0Yr - hcpl
2个回答

15
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null)
            .setType("image/*")
            .putExtra("crop", "true")
            .putExtra("aspectX", width)
            .putExtra("aspectY", height)
            .putExtra("outputX", width)
            .putExtra("outputY", height)
            .putExtra("scale", true)
            .putExtra("scaleUpIfNeeded", true)
            .putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f))
            .putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

你确定吗..? 我无法理解这个。 - GvSharma
非常感谢。我一直在寻找相同的东西 :) - Shankar Prasad

6

您需要创建一个自定义ImageView类来实现图像的缩放和平移,并可以在此图像上覆盖固定矩形的透明图像。并且可以创建该位图的子位图,并将其保存到文件中。

createBitmap(Bitmap source, int x, int y, int width, int height);

这个方法用于创建子位图。
在实现缩放和平移后,我不确定createBitmap能否从图像的可见部分(即当其被缩放时部分图像不可见于屏幕)创建子位图。因此尝试从imageView获取drawingCache()并为其创建子位图。
参考链接:http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/

如果您需要的话,我可以为您提供带有缩放和平移功能的自定义图像类。 - Seshu Vinay
我该如何获取子位图?这听起来像黑魔法。-TDK - TylerKinkade
是的,它可以为您完成所有事情。 - Seshu Vinay
啊,我明白了!你会使用矩形在空间中的位置来定义坐标!太棒了! - TylerKinkade
我在哪里可以找到这个视图? - TylerKinkade
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接