zoukankan      html  css  js  c++  java
  • Android图片裁剪——第三方开源框架Android Image Cropper的使用

    因为项目中有裁剪图片这一需求,我在网上找到了Android Image Cropper,一款使用起来非常简单第三方图片裁剪框架,在此记录一下。
    项目的github地址:https://github.com/ArthurHub/Android-Image-Cropper

    效果图如下

    Android Image Cropper有两种使用方法:
    1、Activity用法
    (1)在app模块的build.gradle文件中添加依赖

    api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

    (2)在AndroidManifest.xml文件中声明所需要的权限

    <!--读取SD卡-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <!--写入SD卡-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    (3)在AndroidManifest.xml文件中注册CropImageActivity

    <activity
    android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
    android:theme="@style/Base.Theme.AppCompat" /> <!-- optional (needed if default theme has no action bar) -->

    (4)在需要裁减图片的地方启动CropImageActivity

    CropImage.activity()
    .setGuidelines(CropImageView.Guidelines.ON) //开启选择器
    .setActivityTitle("头像裁剪")
    .setCropShape(CropImageView.CropShape.RECTANGLE) //选择矩形裁剪
    .start(UserDataActivity.this);

    (5)重写onActivityResult,获取裁剪后的图片的uri:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
      //用户没有进行有效的设置操作,返回
      if (resultCode == RESULT_CANCELED) {
      Toast.makeText(getApplication(), "取消", Toast.LENGTH_LONG).show();
      return;
    }
    
      switch (requestCode) {
        case CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE:{
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
    
        if(resultCode==RESULT_OK){
        final Uri resultUri = result.getUri(); //获取裁减后的图片的Uri
    
        saveHeadPortrait(resultUri); //我自己写的处理图片的方法
    
        }else if(resultCode==CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
          Log.d("PhotoActivity", "onActivityResult: Error");
          Exception exception = result.getError();
          }
        break;
      }
    
    
      super.onActivityResult(requestCode, resultCode, data);
    }

    2、View用法
    (1)(2)步和Activity用法一样。

    (3)增加CropImageView到Activity的布局文件中

    <!-- Image Cropper fill the remaining available height -->
    <com.theartofdev.edmodo.cropper.CropImageView
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cropImageView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>
    

      

    (4)用的时候设置图片的uri

    cropImageView.setImageUriAsync(uri);
    // or (prefer using uri for performance and better user experience)
    cropImageView.setImageBitmap(bitmap);

    (5)获取裁减后的图片

    // subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)
    cropImageView.getCroppedImageAsync();
    // or
    Bitmap cropped = cropImageView.getCroppedImage();
  • 相关阅读:
    当今世界最为经典的十大算法投票进行时
    HDU_1203 I NEED A OFFER!
    POJ_2352 Stars(树状数组)
    HDU_1231 最大连续子序列
    POJ_3264 Balanced Lineup(线段树练手题)
    【转】休息几分种,学几个bash快捷键
    HDU_1013 Digital Roots
    HDU_1381 Crazy Search
    POJ_2528 Mayor's posters(线段树+离散化)
    zoj_1610 Count tht Color
  • 原文地址:https://www.cnblogs.com/Seraph1999/p/13068871.html
Copyright © 2011-2022 走看看