android调用原生图片裁剪后图片尺寸缩放的解决方法

android调用原生图片裁剪后图片尺寸缩放的解决方法,第1张

概述在安卓开发中,如果对拍照后的图片进行图片裁剪,如果是调用系统的裁剪,如下:

在安卓开发中,如果对拍照后的图片进行图片裁剪,如果是调用系统的裁剪,如下:

/*   * 裁剪图片   */  private voID cropPhoto() {    Intent intent = new Intent("com.androID.camera.action.CROP");   Uri uri = Uri.parse("file://" + picSavePath);   intent.setDataAndType(uri,"image/*");   intent.putExtra("crop","true");   // intent.putExtra("aspectX",3);   // intent.putExtra("aspectY",2);   intent.putExtra("outputX",cropX);   intent.putExtra("outputY",cropY);   intent.putExtra("scale","true");   intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);   intent.putExtra("return-data","false");   intent.putExtra("outputFormat",Bitmap.CompressFormat.JPEG.toString());   intent.putExtra("noFaceDetection","true"); // no face detection   startActivityForResult(intent,CROP_PICTURE);  } 

这样,就开始对图片进行裁剪了,但是这样会有一个问题,当裁剪框选择的图片与录入的cropX,xropY的形状不同时,比如传入的参数值是个w>h的长方形,而选择框选择的是w<h的长方形时,这样会导致裁剪的图片结果会被压缩变形。

为了解决压缩变形的问题,我的思路是这样的:

1,先对图片进行裁剪,不设置默认的裁剪图片尺寸。

2.对裁剪后的图片再进行图片的缩放。缩放是采角的矩阵的方式进行的缩放

代码如下:

1.

/*   * 裁剪图片,*/  private voID cropPhotoAndZoom() {    Intent intent = new Intent("com.androID.camera.action.CROP");   Uri uri = Uri.parse("file://" + picSavePath);   intent.setDataAndType(uri,"true");   intent.putExtra("scale",CROP_PICTURE_ANDZOOM);  } 

2.

/**   * 裁剪后,根据裁剪框的长宽比,同时根据图片的需求缩放尺寸进行缩放   *   * @param path   * @param x   *   原始的需求尺寸wIDth   * @param y   *   heiht   * @return   */  public static Bitmap toBigZoom(String path,float x,float y) {   Log.e("bitmaputil","path---" + path + "--x--y--" + x + "--" + y);   Bitmap bitmap = BitmapFactory.decodefile(path);   if (bitmap != null) {     int w = bitmap.getWIDth();    int h = bitmap.getHeight();    float sx = 0;    float sy = 0;    if ((float) w / h >= 1) {     sx = (float) y / w;     sy = (float) x / h;     Log.e("bitmaputil---","w/h--->=1");    } else {     sx = (float) x / w;     sy = (float) y / h;     Log.e("bitmaputil---","w/h---<1");    }    Matrix matrix = new Matrix();    matrix.postscale(sx,sy); // 长和宽放大缩小的比例    Bitmap resizeBmp = Bitmap.createBitmap(bitmap,w,h,matrix,true);    Log.e("bitmaputil---","w---" + resizeBmp.getWIDth() + "h--" + resizeBmp.getHeight());    return resizeBmp;   }    return null;  } 

2中代码,通过判断裁剪框的w,h比来设置图片是放大是横向放大,还是竖向放大,放大后的效果基本上能满足需求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的android调用原生图片裁剪后图片尺寸缩放的解决方法全部内容,希望文章能够帮你解决android调用原生图片裁剪后图片尺寸缩放的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1146736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存