android 图片自动裁剪图片大小,android调用原生图片裁剪后图片尺寸缩放的解决方法...
在安卓开发中,如果对拍照后的图片进行图片裁剪,如果是调用系统的裁剪,如下:
/*
* 裁剪图片
*/
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调用原生图片裁剪后图片尺寸缩放的解决方法...相关推荐
- 刷机命令android手机刷机后,wifi无法使用的解决方法
刷机命令android手机刷机后,wifi无法使用的解决方法 https://blog.csdn.net/wxz1179503422/article/details/83031909
- 虚幻引擎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 ...
- python调用so库输出传入指针_python中使用ctypes调用so传参设置遇到的问题及解决方法...
问题 近日在做一组声纹聚类时,使用了另一团队同学开发的声纹距离算法.该算法对外提供的是一组so包,需要使用方自己去使用.在python中调用纯so包一般使用ctypes类库,用起来看起来简单但也有不少 ...
- html背景图适应div_体验css+div 之 三种使网站背景图片自动适应浏览器大小的方法...
不管你怎么变化浏览器窗口大小,背景图始终会自动调节大小. 1 . 第一次方法: 我第一个想法是需要使用一个 css 背景图,如果这张图够大,就能填充整个屏幕.当浏览器窗口大小没有图片大时,它将自动隐藏 ...
- word表格图片自动适应表格大小_几招教你快速解决word文字、图片、表格排版问题,你肯定遇到过...
在word日常办公中,很多小伙伴是不是总会遇到文字.图片及表格排版的某些问题呢?今天我们来分享一些在办公中经常会遇到几个常见问题的解决方法. 1.写文档的时候出现"吃字"现象. 在 ...
- android native 相册,React Native手动实现调用原生相机相册(Android端)
前言 最近一直在学习RN的相关开发,想做一部分调用原生的实现,来练练手,于是就有了下面这个demo,由于本人是Android开发,所以只实现了Android端的效果. Demo 主要实现 这种调用原生 ...
- android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?
在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...
- android应用商店app图标大小,各大应用商店APP发布截图尺寸
我工作中只做了这几种尺寸: 一.腾讯应用宝 2-5张截图,支持JPG.PNG格式,不小于320*480,推荐480*800,单张小于1M 二.小米应用商店 至少3张截图,规格:720*1280或108 ...
- Android开发固定app图标大小,Android和IOS开发图标、启动页尺寸
最近项目在做android和ios的项目,设计师让我给出图标的尺寸,于是查了一下尺寸. 一.开发中的实际情况: 第一步:产品经理和UI设计师制定好UI规范,然后开始做图标做颜色做尺寸等一系列和APP界 ...
最新文章
- [AlwaysOn Availability Groups]AlwaysOn健康诊断日志
- Docker网络解决方案 - Calico部署记录
- 【杂谈】为什么你学了AI,企业却不要你
- IDEA 重复代码快速重构
- netty获取玩家chanel_Netty中的Channel
- Exchange2007 申请安装证书
- 他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~
- springmvc mybatis 做分页sql 语句
- 前端学习(3044):vue+element今日头条管理-组件目录和组件名
- [js] Number()的存储空间是多大?假如接口返回一个超过最大字节的数字怎么办?
- d3 tip mysql_mysql
- java集成hibernate_JavaWeb_(Spring框架)Spring整合Hibernate
- 理论 | 分库分表需要考虑的问题及方案
- 【HDU1754】I HATE IT,线段树练习
- 以太坊Solidity发布0.8.3版本
- Algorithm:字典序最小问题
- 【小家Java】Future与FutureTask的区别与联系
- devexpress控件使用笔记
- HPE 3PAR StoreServ存储系统连接解决方案
- Python 对象烤地瓜