1.在Android中可以使用如下的方式来调用相册,选择图片进行裁剪使用,昨天在开发的时候遇到一个问题

  private void cropBigImageUri(Uri uri, int outputX, int outputY, int requestCode) {
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", 641);
    intent.putExtra("aspectY", 361);
    intent.putExtra("outputX", outputX);
    intent.putExtra("outputY", outputY);
    intent.putExtra("scale", true);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
    intent.putExtra("return-data", false);
    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    intent.putExtra("noFaceDetection", true);
    startActivityForResult(intent, requestCode);
  }

2.问题描述如下:

  在调用相册选择图片以后,需要对图片按照比列进行裁剪,裁剪后会修改原图。

3.原因分析:

  intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);输出时传入的uri是选择的原图的uri,裁剪后新图片的输出保存会覆盖原图uri

4.解决办法:

  不使用原图的uri进行保存,建立一个新的uri进行保存裁剪后的图片

  String sdcardPathDir = android.os.Environment.getExternalStorageDirectory().getPath() + "xxx/photo/";

  // 有sd卡,是否有myImage文件夹
  File fileDir = new File(sdcardPathDir);
  if (!fileDir.exists()) {
    fileDir.mkdirs();
  }

  // 获取系统时间 然后将裁剪后的图片保存至指定的文件夹
  SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
  address = sDateFormat.format(new java.util.Date());
  if (!FileUtils.isFileExist("")) {
    try {
      FileUtils.createSDDir("");
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

  }

  // 这里需要和FileUtils.SDPATH 一致,而且在之前要创建文件夹
  Uri imageUri = Uri.parse("file:///sdcardxxxx/photo/thumb" + address + ".jpg");

  然后使用intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri );

最新文章

  1. C#基础---Attribute(标签) 和 reflect(反射) 应用二
  2. 论SOA架构的几种主要开发方式
  3. DPDK内存管理(1)
  4. oracle 单列索引 多列索引的性能测试
  5. wkhtmltopdf 中文参数详解
  6. 【转】Java八种基本数据类型的比较及其相互转化
  7. android 安装应用程序apk安装不了
  8. Matlab与微积分计算
  9. 【SPOJ 2319】 BIGSEQ - Sequence (数位DP+高精度)
  10. python-Pickle序列化
  11. 使用libevent进行多线程socket编程demo
  12. BIN和HEX文件的区别
  13. POJ 2029 DP || 暴力
  14. 将 子集和问题 运行时间从 200.8s 优化到 0.4s
  15. Python练习100则--部分概念的没有做
  16. mvc上传图片
  17. Python的命名空间及作用域
  18. 12-openldap使用AD密码
  19. 简单web测试流程(转载)
  20. 从C#到TypeScript - 类型

热门文章

  1. Android与Mysql服务器通信
  2. linux 配置免密码登录
  3. hdu5909-Tree Cutting(树形dp)
  4. 软件工程 --- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试] [附加题]
  5. 高版本myeclipse破解以及优化
  6. curl命令的基本用法
  7. poj 3180 The Cow Prom(强联通分量)
  8. POJ Wormholes (SPFA)
  9. 解决Failed to execute goal org.apache.maven.plugins
  10. Excel Xll开发资料