一:使用原因

虽然,android系统自带裁剪图片的相关应用,但是说实话缺陷很大, 先不说界面,UI,不允许选择图片裁剪等等的诸多问

题,单单适配性贼差这一点, 就让人不得不放弃使用。特别是小米手机,华为手机要花精力去解决闪退问题,还不如自己写个裁

剪功能,或者使用相关的框架。由于项目短期时间内要解决小米手机的适配bug, 所以, 我准备使用框架的方案来解决这个问

题。

二 :相关代码

(1) 管理类:UploadImgManagr.java

public class UploadImgManagr {public final static int CAMERA_REQUEST_CODE = 0x0101;  //打开相机public final static int ALBUM_REQUEST_CODE = 0x0102;   //打开崩地突破public final static int CROP_REQUEST_CODE = UCrop.REQUEST_CROP; //裁剪图片private Activity context;private static volatile  UploadImgManagr instance;private UploadImgManagr(Activity context){this.context = context;}/*** 实例化管理类 单例模式-双重校验锁*/public static UploadImgManagr instance(Activity context){if (instance == null){synchronized(Singleton.class){if(instance == null){instance = new UploadImgManagr(context);}}}return instance;}/***  打开本地图片*/public void uploadLocalPicture(){Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("image/*");context.startActivityForResult(intent, ALBUM_REQUEST_CODE);}/*** 打开相机功能*/public Uri uploadCameraPicture(){Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);String mTempPhotoPath = Environment.getExternalStorageDirectory() + File.separator + "photo.jpeg";Uri imageUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".my.provider", new File(mTempPhotoPath));intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);context.startActivityForResult(intent, CAMERA_REQUEST_CODE);return imageUri;}/*** 裁剪图片*/public void toCropHandler(Uri uri, String path){UCrop.of(uri, Uri.fromFile(new File(context.getCacheDir(),path))).withAspectRatio(1, 1).withMaxResultSize(150, 150).start(context);}/*** 获取Urcp裁剪后的图片*/public Bitmap getCropPicture(Intent data, Bitmap defaultBitmap){String imagePath  ;if (null != UCrop.getOutput(data) && null != (imagePath = Objects.requireNonNull(UCrop.getOutput(data)).toString())){try {InputStream is = new URL(imagePath).openStream();Bitmap bitmap = BitmapFactory.decodeStream(is);return bitmap;}  catch (IOException e) {e.printStackTrace();}}else {Toast.makeText(context, "获取图片失败", Toast.LENGTH_SHORT).show();return defaultBitmap;}return defaultBitmap;}
}

(2) 集成Ucrop架构

implementation 'com.yalantis:ucrop:1.4.1'

(3) 注册 实现相机功能所需的provider和Ucrop相关Activity

<!-- 截图工具  UCrop -->
<providerandroid:name=".global.GenericFileProvider"android:authorities="${applicationId}.my.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths"/>
</provider><activity android:name="com.yalantis.ucrop.UCropActivity"android:screenOrientation="portrait"android:theme="@style/Theme.Design.Light.NoActionBar"/>

(4) 创建provider和相关xml文件

public class GenericFileProvider extends FileProvider {
}
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"><external-path name="external_files" path="."/>
</paths>

END

菜鸟日记(yzy):集成Ucrop裁剪图片架构,并创建管理类使用相关推荐

  1. Python小游戏——外星人入侵(保姆级教程)第一章 03设置飞船图片 04创建Ship类

    系列文章目录 第一章:武装飞船 03:设置飞船图片 04:创建Ship类--管理飞船行为的类 目录 系列文章目录 第一章:武装飞船 03:设置飞船图片 04:创建Ship类--管理飞船行为的类 一.设 ...

  2. UCrop:图片裁剪开源库详细使用

    首先来看效果图,可以对图片进行操作,也可以对裁剪框进行操作.我很满足,我已经用尽洪荒之力啦 最近项目涉及到这样一个需求,用户上传头像功能--且,在选择玉照以后,要求对玉照进行各种裁剪操作. for e ...

  3. SpringBoot 集成 thumbnailator (图片缩放,区域裁剪,水印,旋转,保持比例)保姆级教程(含代码)

    Thumbnailator 是 Google 开源的图片处理库,支持:图片缩放,区域裁剪,水印,旋转,保持比例.详细介绍可以百度或官网,话不多说,直接上代码,具体要结合自己的业务需要进行使用(有些复杂 ...

  4. 计算摄影 | 计算机如何学会自动裁剪图片(自动构图)?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1 自动构图基础 1.1 什么是构图 自动裁剪用摄影的话语来说,就 ...

  5. 【计算摄影】计算机如何学会自动裁剪图片(自动构图)?

    大家好,这是专栏<计算摄影>的第三篇文章,这一个专栏来自于计算机科学与摄影艺术的交叉学科.今天我们讨论的问题是图像的自动裁剪/自动构图问题. 作者&编辑 | 言有三 1 自动构图基 ...

  6. SpringBoot集成Google开源图片处理框架,贼好用!

    1.序 在实际开发中,难免会对图片进行一些处理,比如图片压缩之类的,而其中压缩可能就是最为常见的.最近,我就被要求实现这个功能,原因是客户那边嫌速度过慢.借此机会,今儿就给大家介绍一些一下我做这个功能 ...

  7. 阿里云DataWorks数据集成(DataX)架构实践分享

    阿里云DataWorks数据集成(DataX)架构&实践分享 分享嘉宾:罗海伟 阿里云 编辑整理:约理 中国科学院大学 目录 ▌为什么需要数据集成 数据集成的应用场景 数据集成的角色和地位 ▌ ...

  8. android 自定义图片裁剪,android 自定义比例裁剪图片(拍照 相册)方式 自定义比例...

    先说下我这个有啥好处 主要是能够自定义设置裁剪图片的比例.比如 :今天产品 给你说裁剪 成16:9 的图片. 你做好了 OK 明天 产品又和你说 裁剪成10:7 的图片 ,你是不是要吐血, 我这里只要 ...

  9. android裁剪图片功能,Android实现拍照、选择图片并裁剪图片功能

    一. 实现拍照.选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果. 二. uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有 ...

  10. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)

    插件描述:移动端头像上传,支撑头像预览和放大缩小平移,内置上传至后端请求方法. 注:请在移动端用手势查看缩放效果,PC端无法缩放 Mavatar 移动端头像上传,支撑头像预览和放大缩小平移,内置上传至 ...

最新文章

  1. 计算机科学与技术历史步伐,计算机科学与技术1001班先进班级体申报材料.pdf
  2. Gartner 2022年新兴技术和趋势影响力雷达图中五项具有影响力的技术
  3. z变换公式表_各种钣金折弯极限尺寸计算公式汇总,干货!
  4. Vue组件实现tips的总结
  5. 华北电力大学计算机科学与技术考研,华北电力大学吴克河教授谈计算机科学与技术专业...
  6. Visual Studio 2022这些重大更新,影响每一位.NET开发者!
  7. linux tasklet函数,tasklet和work_struct详解
  8. Pango Reference Manual 【文本和字体处理函数库】
  9. Software--Architecture--SOA 面向服务体系结构
  10. 三问百度云,ABC如何帮它跑赢马拉松?
  11. 读书笔记:陈希孺:概率论与数理统计:2014.01.01
  12. Google浏览器下载地址
  13. 用matlab2012制作机器人,利用matlab建立简单的机器人模型的步骤
  14. 南卡租房之Park Circle
  15. python数据采集培训
  16. 【数据可视化】数据可视化之美——用专家的眼光洞察数据
  17. 长沙“一江两岸”新网红,看铜官古镇的“文和游”
  18. ResNet网络详解
  19. offer选择:创业公司 VS 大厂外包
  20. Tensorrtx+yolov5+windows10+vs2015+cuda11.1关键问题及步骤记录

热门文章

  1. Fiddler:显示请求花费的时间
  2. 栈(LIFO:后进先出)
  3. html复选框打钩行变颜色,Excel 单元格打勾会变颜色,开发工具的复选框这样玩...
  4. 微信小程序 一键保存视频到手机相册功能(视频来源为链接)
  5. 计算机硬件设备ppt教案,《计算机硬件基础》PPT课件.ppt
  6. Pytorch:VGG16
  7. Cadence PSpice 补充1:脉冲信号源的详细介绍与使用方法图文演示
  8. 智慧树python第三章答案_智慧树Python语言应用第三单元章节测试答案选修课网课慕课答案...
  9. 使用 closest 和 matches 方法来检测元素是否存在某选择器
  10. 华为云计算IE面试笔记-简述Fusion Storage主要模块MDC,OSD,VBS,FSA及FSM的功能定位及交互关系