博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android对图片进行裁剪,固定框大小
阅读量:3974 次
发布时间:2019-05-24

本文共 1478 字,大约阅读时间需要 4 分钟。

需求:将图片放入固定框中,通过对图片进行缩放和移动,将框内的部分裁剪出来

分析:传统的做法大概是这样,调用系统的图片裁剪界面

Intent intent = new Intent("com.android.camera.action.CROP");        // 判断版本大于等于7.0        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {            // 给目标应用一个临时授权            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);            intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);        }        intent.setDataAndType(data, "image/*");        // crop为true时表示显示的view可以剪裁        intent.putExtra("crop", "true");        // aspectX aspectY 是宽高的比例        intent.putExtra("aspectX", 1);        intent.putExtra("aspectY", 1);        // outputX,outputY 是剪裁图片的宽高        intent.putExtra("outputX", 200);        intent.putExtra("outputY", 200);        uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + "small.jpg");        intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile);        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());        startActivityForResult(intent, PHOTOZOOM);

但系统的东西~你懂的,没几样好用的,这个框没办法固定不变,用户可以随意调整它的大小,导致即使可以通过设置aspectX和aspectY来达到初始时的宽高比,但不符合我们的需求。更搞笑的是,它又支持设置outputX和outputY,即,不论用户如何调整框的大小,得到的图片大小永远是宽为outputX像素,高为outputY像素,假如我设置outputX和outputY都是200,结果裁剪框被用户拉成了1:2的比例,得到的图片就是被压扁的!试问,还有比这更垃圾的系统接口吗??

处理:自定义~参考了鸿洋的博客以及LargeImage的大图框架,整合成符合需求的代码

注:获取当前大图在框中的位图方法:

public Bitmap clip() {    //开启绘图缓存    setDrawingCacheEnabled(true);    //返回当前View的视图缓存    return getDrawingCache();}

效果图:

可以缩放调整大小:

裁剪所得:

转载地址:http://garki.baihongyu.com/

你可能感兴趣的文章
编写的dm9000ep驱动(2.6.13)
查看>>
编写的dm9000ep驱动(2.6.13)
查看>>
DM9000 驱动移植及源码简析
查看>>
DM9000 驱动移植及源码简析
查看>>
创建字符设备的三种方法 (转载)
查看>>
Linux下ARM汇编教程
查看>>
Linux下ARM汇编教程
查看>>
linux面试题参考答案
查看>>
LINUX驱动之IIC子系统之三I2C的数…
查看>>
LINUX驱动之IIC子系统之三I2C的数…
查看>>
Linux设备驱动之I2C架构分析
查看>>
浅析linux内核中的idr机制
查看>>
i2c子系统之__i2c_first_dynamic_b…
查看>>
linux内核SPI总线驱动分析(一)
查看>>
浅析linux内核中的idr机制
查看>>
source insight使用
查看>>
linux内核SPI总线驱动分析(一)
查看>>
linux设备模型之uart驱动架构分析
查看>>
source insight使用
查看>>
git基本使用
查看>>