全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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<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, "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图片压缩变形  # Android调用系统图片裁剪限定尺寸及7.0照相问题的解决方法  # Android实现拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)  # Android ImageView实现图片裁剪和显示功能  # Android 7.0中拍照和图片裁剪适配的问题详解  # Android图片裁剪功能实现代码  # Android实现相机拍摄、选择、图片裁剪功能  # Android开发从相机或相册获取图片裁剪  # 使用Java代码在Android中实现图片裁剪功能  # android实现图片裁剪的两种方法  # 的是  # 是个  # 会有  # 是这样  # 一个问题  # 能满足  # 长宽  # 大家多多  # 长和  # 就开始  # 大后  # cropX  # outputY  # CompressFormat  # aspectX  # true  # outputX  # aspectY  # cropY  # EXTRA_OUTPUT 


相关文章: 如何通过VPS建站实现广告与增值服务盈利?  建站之星安装需要哪些步骤及注意事项?  如何用AWS免费套餐快速搭建高效网站?  家庭服务器如何搭建个人网站?  如何构建满足综合性能需求的优质建站方案?  如何高效生成建站之星成品网站源码?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何通过FTP空间快速搭建安全高效网站?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  javascript基本数据类型及类型检测常用方法小结  建站之星价格显示格式升级,你的预算足够吗?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  定制建站价位费用解析与套餐推荐全攻略  Android使用GridView实现日历的简单功能  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  在线制作视频的网站有哪些,电脑如何制作视频短片?  建站上传速度慢?如何优化加速网站加载效率?  建站之星2.7模板:企业网站建设与h5定制设计专题  Swift中switch语句区间和元组模式匹配  建站之星如何实现五合一智能建站与营销推广?  如何破解联通资金短缺导致的基站建设难题?  宝塔建站无法访问?如何排查配置与端口问题?  定制建站是什么?如何实现个性化需求?  网站制作免费,什么网站能看正片电影?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  测试制作网站有哪些,测试性取向的权威测试或者网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  网站制作网站,深圳做网站哪家比较好?  深圳网站制作的公司有哪些,dido官方网站?  建站之星后台管理系统如何操作?  如何设置并定期更换建站之星安全管理员密码?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  建站之星在线版空间:自助建站+智能模板一键生成方案  高端建站如何打造兼具美学与转化的品牌官网?  清除minerd进程的简单方法  如何快速生成高效建站系统源代码?  javascript中对象的定义、使用以及对象和原型链操作小结  东莞专业制作网站的公司,东莞大学生网的网址是什么?  建站之星后台密码如何安全设置与找回?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  香港服务器租用费用高吗?如何避免常见误区?  常州企业建站如何选择最佳模板?  建站之星免费模板:自助建站系统与智能响应式一键生成  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  如何配置WinSCP新建站点的密钥验证步骤?  如何批量查询域名的建站时间记录?  黑客入侵网站服务器的常见手法有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。