图片工具类,照相,相册,剪裁,uri转换为string地址,缩放图片
来源:互联网 发布:淘宝售前客服用语 编辑:程序博客网 时间:2024/05/17 23:40
创建的一个工具类
import android.app.Activity;import android.content.Context;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.provider.MediaStore;import android.support.v4.app.Fragment;/** * Created by Administrator on 2016/7/9. */public class ImageUtils { private static final int ww = 480; private static final int hh = 800; //单例模式 private ImageUtils() { } private static ImageUtils instance = null; public static ImageUtils getInstance(){ if (instance == null) { instance = new ImageUtils(); } return instance; } //判断调用者是Fragment还是Activity private void startActivityForResult(Object object,int requestCode,Intent intent){ if(object instanceof Fragment){ Fragment fragment=(Fragment)object; fragment.startActivityForResult(intent, requestCode); }else if(object instanceof Activity){ Activity activity=(Activity)object; activity.startActivityForResult(intent, requestCode); } } //调用系统相机 public void getCameraPic(Uri uri,Object object) { Intent intent = new Intent(); intent.setAction("android.media.action.IMAGE_CAPTURE"); intent.addCategory("android.intent.category.DEFAULT"); // 照完照片后要保存起来, // 先获取外部储存卡的路径 intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(object,Consts.CAMEAR_REQUEST,intent); } //调用本地相册 public void getFilePic(Object object){ Intent intent = new Intent(); intent.setAction("android.intent.action.PICK"); intent.addCategory("android.intent.category.DEFAULT"); intent.setType("image/*"); startActivityForResult(object,Consts.OPEN_PHOTO,intent); } //调用系统截取图片的方法 public void crop(Uri uri,Object object) { Intent intent = new Intent(); intent.setAction("com.android.camera.action.CROP"); intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(uri, "image/*"); // 是否要裁剪 intent.putExtra("crop", true); // x和y的宽高比 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // 宽和高的像素 intent.putExtra("outputX", 250); intent.putExtra("outputY", 250); // 裁剪后的照片格式 intent.putExtra("outputFormat", "JPEG"); // 是否返回 intent.putExtra("return-data", true); //因为需要裁剪后的照片,所以需要返回结果 startActivityForResult(object,Consts.CROP_PIC,intent); } //通过路径获取bitmap,并进行缩放 public Bitmap pathToBitmap(String filePath) { if (filePath == null) { return null; } BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile(filePath, options); int width = options.outWidth; int height = options.outHeight; float scale = 1f; if (width > ww && width > height) { scale = width / ww; } else if (height > hh && height > width) { scale = height / hh; } else { scale = 1; } options.inSampleSize = (int) scale; options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeFile(filePath, options); return bitmap; } //uri转换为String地址 public static String uriToRealPath(Context context, Uri uri) { Cursor cursor = context.getContentResolver().query(uri, new String[]{MediaStore.Images.Media.DATA}, null, null, null); cursor.moveToFirst(); String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); return path; }}
可以用Activity调用也可以用Fragment的调用
★★★注意在Fragment使用onActivityResult的方法的时候,要使用fragment.startActivityForResult(),不能使用activity,不然回传的时候接受不到值
这里使用的是Fragment,有两个地方进行请求,一个剪裁(flag==0),一个不剪裁(flag==1)
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //相机传来的消息 if (requestCode == Consts.CAMEAR_REQUEST) { if(flag==0){ //进行剪裁 imageUtils.crop(Uri.fromFile(saveFile),Fragment_me.this); }else if(flag==1){ //为图片设置背景,讲将图片的地址转换为Bitmap并进行转缩放 meRelTitlebg.setBackground(new BitmapDrawable(imageUtils.pathToBitmap(saveFile.getPath()))); } } //剪裁图片 else if (requestCode == Consts.CROP_PIC) { if(data!=null){ Bitmap bitmap = data.getParcelableExtra("data"); meIcon.setImageBitmap(bitmap); } } //打开本地图册回传的消息 else if (requestCode == Consts.OPEN_PHOTO) { if(data!=null){ if(flag==0){ //获取照相的图片路径 Uri uri=data.getData(); imageUtils.crop(uri,Fragment_me.this); }else if(flag==1){ Uri uri=data.getData(); try { //通过uri获取图片路径 String path = imageUtils.uriToRealPath(activity, uri); meRelTitlebg.setBackground(new BitmapDrawable(imageUtils.pathToBitmap(path))); //drawable解析uri转换为Drawable对象//meRelTitlebg.setBackground(Drawable.createFromStream(activity.getContentResolver().openInputStream(uri),null)); } catch (Exception e) { e.printStackTrace(); } } } } }
0 0
- 图片工具类,照相,相册,剪裁,uri转换为string地址,缩放图片
- android照相、相册获取图片剪裁报错的解决方案
- android照相、相册获取图片剪裁报错的解决方法
- android照相、相册获取图片剪裁报错的解决方案
- android照相、相册获取图片剪裁报错的解决方法
- android 图片Uri转换为本地地址
- 获取相册图片 照相图片 并剪裁 完美适配6.0版本的相册错误
- 图片剪裁工具类
- 图片转换缩放工具类
- 从相册uri获取图片地址
- android照相、相册获取图片剪裁部分手机异常的解决方法
- 图片处理类(剪裁、缩放、水印)
- 图片处理类(剪裁、缩放、水印)
- android 用相机照相并剪裁图片
- 工具类--BitmapUtil图片转换,图片缩放,旋转图片
- 从相册取图片得到图片的uri再通过工具类得到图片的绝对路径
- c#缩放和剪裁图片
- Android之图片压缩和Uri与String类型的路径转换,获取图片,文件大小的工具类
- CentOS7 安装Keepalived以及基本配置
- css3 box-sizing属性
- POJ2446
- JZOJ.4596 Stree
- AVA整合HTML5实现扫描二维码功能项目源码
- 图片工具类,照相,相册,剪裁,uri转换为string地址,缩放图片
- Network(图——割点 + 模板)
- 8VC Venture Cup 2016 - Final Round (Div. 2 Edition) E. Package Delivery
- win、py、notepad++的编码方式及问题
- Android SwipeRefreshLayout 官方下拉刷新控件
- netty的http client连接池设计
- GIT 代码管理工具 SourceTree
- JSON详解
- com.android.ddmlib.AdbCommandRejectedException:***error while installing apk