美文网首页
系统图片裁剪

系统图片裁剪

作者: Zmylls | 来源:发表于2017-02-22 20:15 被阅读74次

    项目中用到图片裁剪,碰到两个问题,在此做下记录

    1. 裁剪大图片
    public static Intent cropRawPhoto(Uri uri, int aspectX, int aspectY, int output_X, int output_Y) {
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");
            // 设置裁剪
            intent.putExtra("crop", "true");
            // aspectX , aspectY :宽高的比例
            intent.putExtra("aspectX", aspectX);
            intent.putExtra("aspectY", aspectY);
            // outputX , outputY : 裁剪图片宽高
            intent.putExtra("outputX", output_X);
            intent.putExtra("outputY", output_Y);
            intent.putExtra("return-data", false);
    
            File file = new File(MainApp.getPhotoCachePath() + "temp.jpg");
            if (!file.exists()) {
                try {
                    file.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            Uri outputUri = Uri.fromFile(file);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
            return intent;
        }
    

    需要裁剪的图片比较大,如果在裁剪后直接将图片数据返回,则容易出现oom,所以我们需要设置不返回图片数据,同时将裁剪后的图片保存到sd卡上的临时文件。
    intent.putExtra("return-data", false);
    这里的“return-data” 为false,表示将不返回图片裁剪后数据;true则返回图片数据。
    之后将裁剪后的数据,输出到sd卡中

     File file = new File(MainApp.getPhotoCachePath() + "temp.jpg");
         if (!file.exists()) {
             try {
                 file.createNewFile();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         Uri outputUri = Uri.fromFile(file);
    

    最后我们将通过返回的outputUri来获取裁剪后的图片信息,当然也可以直接去访问sd卡中的图片文件temp.jpg

    1. 设置裁剪框大小
     // aspectX , aspectY :宽高的比例
     intent.putExtra("aspectX", aspectX);
     intent.putExtra("aspectY", aspectY);
    

    "aspectX"和"aspectY"分别表示裁剪框的宽高。
    注意这里的值最好设置为整型而不用float等其他类型。设置为整型比例,裁剪框才能固定比例。而float类型,在测试之后发现,大部分手机都不能固定宽高比,只有一款乐视手机能固定。
    同时设置等比,如1:1,有的手机,会出现一个圆形的裁剪框,但有的手机不会

    相关文章

      网友评论

          本文标题:系统图片裁剪

          本文链接:https://www.haomeiwen.com/subject/yngmwttx.html