package com.fuban.user.utils; import android.app.Activity; import android.graphics.Bitmap; import android.net.Uri; import android.provider.MediaStore; import android.text.TextUtils; import android.util.Log; import com.facebook.common.util.UriUtil; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.backends.pipeline.PipelineDraweeController; import com.facebook.drawee.controller.AbstractDraweeController; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.common.ResizeOptions; import com.facebook.imagepipeline.postprocessors.IterativeBoxBlurPostProcessor; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; /** * Created by Administrator on 2018/1/23. */ public class ImageUtils { //加载本地图片 public static void loadDrawable(SimpleDraweeView draweeView, int resId) { Uri uri = new Uri.Builder() .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build(); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setOldController(draweeView.getController()) .build(); draweeView.setController(controller); } // public static void loadUri(ImageView draweeView, Uri uri){ // draweeView.setImageURI(uri); // } public static void loadUri(SimpleDraweeView draweeView, String uri) { DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); draweeView.setController(controller); // draweeView.setImageURI(uri); } public static void loadSmallUri(SimpleDraweeView draweeView, String uri) { int width = 100, height = 100; if (TextUtils.isEmpty(uri)) { return; } Uri uri1 = Uri.parse(uri); ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri1) .setResizeOptions(new ResizeOptions(width, height)) .build(); PipelineDraweeController controller = (PipelineDraweeController) Fresco.newDraweeControllerBuilder() .setOldController(draweeView.getController()) .setImageRequest(request) .build(); draweeView.setController(controller); } /** * 以高斯模糊显示。 * * @param draweeView View。 * @param url url. * @param iterations 迭代次数,越大越魔化。 * @param blurRadius 模糊图半径,必须大于0,越大越模糊。 */ public static void showUrlBlur(SimpleDraweeView draweeView, String url, int iterations, int blurRadius) { try { Uri uri = Uri.parse(url); ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri) .setPostprocessor(new IterativeBoxBlurPostProcessor(iterations, blurRadius)) .build(); AbstractDraweeController controller = Fresco.newDraweeControllerBuilder() .setOldController(draweeView.getController()) .setImageRequest(request) .build(); draweeView.setController(controller); } catch (Exception e) { e.printStackTrace(); } } //转换为bitmap public static Bitmap getBitmapFromUri(Activity activity, Uri uri) { try { // 读取uri所在的图片 Bitmap bitmap = MediaStore.Images.Media.getBitmap(activity.getContentResolver(), uri); return bitmap; } catch (Exception e) { Log.e("[Android]", e.getMessage()); Log.e("[Android]", "目录为:" + uri); e.printStackTrace(); return null; } } public static Uri getUriforBitmap(Activity activity, Bitmap bitmap) { try { // 读取uri所在的图片 Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(activity.getContentResolver(), bitmap, null, null)); return uri; } catch (Exception e) { Log.e("[Android]", e.getMessage()); e.printStackTrace(); return null; } } }