package com.future.driver.utils; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.provider.MediaStore; import android.text.TextUtils; import android.util.Log; import android.widget.ImageView; import com.facebook.common.executors.CallerThreadExecutor; import com.facebook.common.references.CloseableReference; import com.facebook.common.util.UriUtil; import com.facebook.datasource.DataSource; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.AbstractDraweeController; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.core.ImagePipeline; import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber; import com.facebook.imagepipeline.image.CloseableImage; import com.facebook.imagepipeline.postprocessors.IterativeBoxBlurPostProcessor; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import cn.sinata.xldutils.utils.Base64; /** * 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); } /** * 将图片转换成Base64编码的字符串 * * @param path 图片本地路径 * @return base64编码的字符串 */ public static String imageToBase64(String path) { if (TextUtils.isEmpty(path)) { return null; } InputStream is = null; byte[] data; String result = null; try { is = new FileInputStream(path); //创建一个字符流大小的数组。 data = new byte[is.available()]; //写入数组 is.read(data); //用默认的编码格式进行编码 result = Base64.encodeToString(data, Base64.DEFAULT); } catch (IOException e) { e.printStackTrace(); } finally { if (null != is) { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } /** * 以高斯模糊显示。 * * @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。 * * @param imageUrl 图片地址。 */ public static void loadToBitmap(String imageUrl, BaseBitmapDataSubscriber mDataSubscriber, Context context) { ImageRequest imageRequest = ImageRequestBuilder .newBuilderWithSource(Uri.parse(imageUrl)) .setProgressiveRenderingEnabled(true) .build(); ImagePipeline imagePipeline = Fresco.getImagePipeline(); DataSource> dataSource = imagePipeline.fetchDecodedImage (imageRequest, context); dataSource.subscribe(mDataSubscriber, CallerThreadExecutor.getInstance()); } /** * 转换为bitmap * * @param activity * @param uri * @return */ 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; } } }