18034727885
2026-04-27 3a4c1bbb2cf4fb1cdda8a5061b0674f30e7456b4
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
package com.example.basecore.util;
 
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
 
import androidx.annotation.NonNull;
 
import org.jetbrains.annotations.NotNull;
 
/**
 * @description:
 */
public class ImageUtils {
 
    public static Uri getUriByView(Context context, View view) {
        Bitmap bitmap = viewToBitmap(view, (Activity) context);
        if (bitmap == null) {
            return null;
        }
 
        return bitmapToUri(context, bitmap);
    }
    public static Uri bitmapToUri(Context context, @NonNull Bitmap bitmap) {
        return Uri.parse(MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, null, null));
    }
 
    public static Bitmap viewToBitmap(View view, Activity activity) {
//        WindowManager manager = activity.getWindowManager();
//        DisplayMetrics metrics = new DisplayMetrics();
//        manager.getDefaultDisplay().getMetrics(metrics);
//        int width = metrics.widthPixels;
//        int height = metrics.heightPixels;
//
//        //测量使得view指定大小
//        int measureWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY);
//        int measureHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.AT_MOST);
//
//        view.measure(measureWidth, measureHeight);
//        //调用layout方法布局后,可以得到view的尺寸
//        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
//        Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
//        Canvas canvas = new Canvas(bitmap);
//        canvas.drawColor(Color.WHITE);
//        view.draw(canvas);
 
        view.buildDrawingCache();
        Bitmap bitmap = view.getDrawingCache();
        return bitmap;
    }
 
    @NotNull
    public static String getTmpFilePath(@NotNull Activity mContext) {
        // 生成一个临时文件路径
        return mContext.getExternalCacheDir().getAbsolutePath() + "/tmp_up_cache.jpg";
    }
}