18034727885
2026-07-24 6180e2986ca3c39262486458cee97e54d5f67450
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
package com.igo.user.utils;
 
import android.annotation.SuppressLint;
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 android.widget.ImageView;
 
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
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;
import com.igo.user.views.textbanner.utils.DisplayUtils;
 
/**
 * 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;
        }
 
    }
 
    /***
     * 加载图片
     */
    @SuppressLint("CheckResult")
    public static void load(ImageView imageView, String url) {
        Glide.with(imageView)
                .load(url)
                .into(imageView);
    }
 
    /***
     * 加载图片
     */
    @SuppressLint("CheckResult")
    public static void load(ImageView imageView, String url, int placeholder, int error, int radius) {
        Glide.with(imageView)
                .load(url)
                .apply(getRequestOption(placeholder, error, DisplayUtils.dip2px(imageView.getContext(), radius)))
                .placeholder(placeholder)
                .error(error)
                .into(imageView);
    }
 
    private static RequestOptions getRequestOption(int placeholder, int error, int radius) {
        RequestOptions requestOptions = new RequestOptions()
                .error(error)
                .placeholder(placeholder)
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE);
        if (radius == 0) {
            requestOptions = requestOptions.centerCrop();
        } else {
            requestOptions = requestOptions.apply(new RequestOptions().transform(new CenterCrop(), new RoundedCorners(radius)));
        }
        return requestOptions;
    }
}