package com.kuanzhai.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<CloseableReference<CloseableImage>> 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;
|
}
|
|
}
|
}
|