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

/*

* 裁剪图片

*/

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

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

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

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

代码如下:

1.

/*

* 裁剪图片,

*/

private void cropPhotoAndZoom() {

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("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_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, 0, 0, w, h, matrix, true);

Log.e("bitmaputil---", "w---" + resizeBmp.getWidth() + "h--" + resizeBmp.getHeight());

return resizeBmp;

}

return null;

}

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

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

android 图片自动裁剪图片大小,android调用原生图片裁剪后图片尺寸缩放的解决方法...相关推荐

  1. 刷机命令android手机刷机后,wifi无法使用的解决方法

    刷机命令android手机刷机后,wifi无法使用的解决方法 https://blog.csdn.net/wxz1179503422/article/details/83031909

  2. 虚幻引擎UE4.25版本使用Android打包出错提示:ERROR: cmd.exe failed with args /c 和 :app:assembleDebug的解决方法

    虚幻引擎 UE4.25版本使用Android打包出错提示:ERROR: cmd.exe failed with args /c 和 :app:assembleDebug的解决方法: 在虚幻引擎的jdk ...

  3. python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...

    问题 近日在做一组声纹聚类时,使用了另一团队同学开发的声纹距离算法.该算法对外提供的是一组so包,需要使用方自己去使用.在python中调用纯so包一般使用ctypes类库,用起来看起来简单但也有不少 ...

  4. html背景图适应div_体验css+div 之 三种使网站背景图片自动适应浏览器大小的方法...

    不管你怎么变化浏览器窗口大小,背景图始终会自动调节大小. 1 . 第一次方法: 我第一个想法是需要使用一个 css 背景图,如果这张图够大,就能填充整个屏幕.当浏览器窗口大小没有图片大时,它将自动隐藏 ...

  5. word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...

    在word日常办公中,很多小伙伴是不是总会遇到文字.图片及表格排版的某些问题呢?今天我们来分享一些在办公中经常会遇到几个常见问题的解决方法. 1.写文档的时候出现"吃字"现象. 在 ...

  6. android native 相册,React Native手动实现调用原生相机相册(Android端)

    前言 最近一直在学习RN的相关开发,想做一部分调用原生的实现,来练练手,于是就有了下面这个demo,由于本人是Android开发,所以只实现了Android端的效果. Demo 主要实现 这种调用原生 ...

  7. android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?

    在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...

  8. android应用商店app图标大小,各大应用商店APP发布截图尺寸

    我工作中只做了这几种尺寸: 一.腾讯应用宝 2-5张截图,支持JPG.PNG格式,不小于320*480,推荐480*800,单张小于1M 二.小米应用商店 至少3张截图,规格:720*1280或108 ...

  9. Android开发固定app图标大小,Android和IOS开发图标、启动页尺寸

    最近项目在做android和ios的项目,设计师让我给出图标的尺寸,于是查了一下尺寸. 一.开发中的实际情况: 第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界 ...

最新文章

  1. [AlwaysOn Availability Groups]AlwaysOn健康诊断日志
  2. Docker网络解决方案 - Calico部署记录
  3. 【杂谈】为什么你学了AI,企业却不要你
  4. IDEA 重复代码快速重构
  5. netty获取玩家chanel_Netty中的Channel
  6. Exchange2007 申请安装证书
  7. 他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~
  8. springmvc mybatis 做分页sql 语句
  9. 前端学习(3044):vue+element今日头条管理-组件目录和组件名
  10. [js] Number()的存储空间是多大?假如接口返回一个超过最大字节的数字怎么办?
  11. d3 tip mysql_mysql
  12. java集成hibernate_JavaWeb_(Spring框架)Spring整合Hibernate
  13. 理论 | 分库分表需要考虑的问题及方案
  14. 【HDU1754】I HATE IT,线段树练习
  15. 以太坊Solidity发布0.8.3版本
  16. Algorithm:字典序最小问题
  17. 【小家Java】Future与FutureTask的区别与联系
  18. devexpress控件使用笔记
  19. HPE 3PAR StoreServ存储系统连接解决方案
  20. Python 对象烤地瓜

热门文章

  1. 讲解Guitar pro的音轨菜单的使用
  2. Charm安装、使用
  3. linux 使用7z 分卷压缩文件到指定目录(附上安装包和安装方法)
  4. BigPipe的正确使用姿势
  5. Android【GridView使用】
  6. 开元研究之中国传统媒体发展预测
  7. bugreport工具的使用
  8. HTML二级菜单,简易做法小毅博客
  9. Endnote X9文献管理器应用---使用总结
  10. W25Qxx Flash存储