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"; } }