工作空间 v3.6.5.2版本的 MD5 值为:58e65af156c65a63bf64ed2e64960853

以下内容为反编译后的 PhotoUtils.java 源代码,内容仅作参考


package com.uusafe.utils.common;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.media.ExifInterface;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import android.provider.MediaStore;
import androidx.fragment.app.Fragment;
import com.uusafe.base.sandboxsdk.env.PortalSandboxHelper;
import com.uusafe.h5app.library.api.IConstants;
import com.uusafe.secamera.common.Const;
import com.xiaomi.mipush.sdk.Constants;
import com.zhizhangyi.platform.mdm.api.common.ResultConst;
import com.zhizhangyi.platform.network.download.internal.Downloads;
import com.zhizhangyi.platform.zwebview.AgentWebPermissions;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class PhotoUtils {
    private static final String TAG = "PhotoUtils";

    public static void adjustPhoto(String str, int i) throws FileNotFoundException {
        Bitmap decodeFile = BitmapFactory.decodeFile(str);
        if (decodeFile == null) {
            return;
        }
        Bitmap adjustedBitmap = getAdjustedBitmap(decodeFile, str);
        FileOutputStream fileOutputStream = new FileOutputStream(str);
        if (adjustedBitmap != null) {
            adjustedBitmap.compress(Bitmap.CompressFormat.JPEG, i, fileOutputStream);
        }
        IOUtils.closeQuietly((OutputStream) fileOutputStream);
    }

    public static Bitmap bimapRound(Bitmap bitmap, float f) {
        Bitmap createBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(createBitmap);
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        RectF rectF = new RectF(rect);
        canvas.drawARGB(0, 0, 0, 0);
        canvas.drawRoundRect(rectF, f, f, paint);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
        return createBitmap;
    }

    public static void cropImageUri(Activity activity, Uri uri, Uri uri2, int i, int i2, int i3, int i4, int i5) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        if (Build.VERSION.SDK_INT >= 24) {
            intent.addFlags(1);
        }
        intent.setDataAndType(uri, IConstants.ACCEPT_TYPE_IMAGE);
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", i);
        intent.putExtra("aspectY", i2);
        intent.putExtra("outputX", i3);
        intent.putExtra("outputY", i4);
        intent.putExtra("scale", true);
        intent.putExtra("output", uri2);
        intent.putExtra("return-data", false);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);
        activity.startActivityForResult(intent, i5);
    }

    public static Bitmap drawableToBitmap(Drawable drawable) {
        int intrinsicWidth = drawable.getIntrinsicWidth();
        int intrinsicHeight = drawable.getIntrinsicHeight();
        if (intrinsicWidth <= 0 || intrinsicHeight <= 0) {
            return null;
        }
        Bitmap createBitmap = Bitmap.createBitmap(intrinsicWidth, intrinsicHeight, drawable.getOpacity() != -1 ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
        Canvas canvas = new Canvas(createBitmap);
        drawable.setBounds(0, 0, intrinsicWidth, intrinsicHeight);
        drawable.draw(canvas);
        return createBitmap;
    }

    private static int exifToDegrees(int i) {
        if (i == 6) {
            return 90;
        }
        if (i == 3) {
            return ResultConst.Type.sIsChangeWallPaperDisabled;
        }
        if (i == 8) {
            return ResultConst.Type.sSetVpnDisabled;
        }
        return 0;
    }

    private static Bitmap getAdjustedBitmap(Bitmap bitmap, String str) {
        if (bitmap == null) {
            return null;
        }
        try {
            int attributeInt = new ExifInterface(str).getAttributeInt(androidx.exifinterface.media.ExifInterface.TAG_ORIENTATION, 1);
            int exifToDegrees = exifToDegrees(attributeInt);
            Matrix matrix = new Matrix();
            if (attributeInt != 0.0f) {
                matrix.preRotate(exifToDegrees);
            }
            return Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        } catch (IOException e2) {
            e2.printStackTrace();
            return bitmap;
        }
    }

    public static Bitmap getBitmapFromUri(Uri uri, Context context) {
        try {
            return MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
        } catch (Exception e2) {
            e2.printStackTrace();
            return null;
        }
    }

    private static String getDataColumn(Context context, Uri uri, String str, String[] strArr) {
        Cursor cursor;
        try {
            cursor = context.getContentResolver().query(uri, new String[]{Downloads.Impl._DATA}, str, strArr, null);
            if (cursor != null) {
                try {
                    if (cursor.moveToFirst()) {
                        String string = cursor.getString(cursor.getColumnIndexOrThrow(Downloads.Impl._DATA));
                        if (cursor != null) {
                            cursor.close();
                        }
                        return string;
                    }
                } catch (Throwable th) {
                    th = th;
                    if (cursor != null) {
                        cursor.close();
                    }
                    throw th;
                }
            }
            if (cursor != null) {
                cursor.close();
            }
            return null;
        } catch (Throwable th2) {
            th = th2;
            cursor = null;
        }
    }

    @SuppressLint({"NewApi"})
    public static String getPath(Context context, Uri uri) {
        Uri uri2 = null;
        if ((Build.VERSION.SDK_INT >= 19) && DocumentsContract.isDocumentUri(context, uri)) {
            if (isExternalStorageDocument(uri)) {
                String[] split = DocumentsContract.getDocumentId(uri).split(Constants.COLON_SEPARATOR);
                if ("primary".equalsIgnoreCase(split[0])) {
                    return "file:///" + Environment.getExternalStorageDirectory() + "/" + split[1];
                }
            } else if (isDownloadsDocument(uri)) {
                Uri withAppendedId = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(DocumentsContract.getDocumentId(uri)).longValue());
                return "file:///" + getDataColumn(context, withAppendedId, null, null);
            } else if (isMediaDocument(uri)) {
                String[] split2 = DocumentsContract.getDocumentId(uri).split(Constants.COLON_SEPARATOR);
                String str = split2[0];
                if ("image".equals(str)) {
                    uri2 = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                } else if (Const.TAG_VIDEO.equals(str)) {
                    uri2 = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                } else if (PortalSandboxHelper.PERMISSION_AUDIO.equals(str)) {
                    uri2 = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                }
                String[] strArr = {split2[1]};
                return "file:///" + getDataColumn(context, uri2, "_id=?", strArr);
            }
        } else if ("content".equalsIgnoreCase(uri.getScheme())) {
            return "file:///" + getDataColumn(context, uri, null, null);
        } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            return "file:///" + uri.getPath();
        }
        return null;
    }

    public static final String insertImage(ContentResolver contentResolver, String str, String str2, String str3) throws FileNotFoundException {
        FileInputStream fileInputStream = new FileInputStream(str);
        try {
            Bitmap decodeFile = BitmapFactory.decodeFile(str);
            String insertImage = insertImage(contentResolver, decodeFile, str2, str3);
            decodeFile.recycle();
            return insertImage;
        } finally {
            try {
                fileInputStream.close();
            } catch (IOException unused) {
            }
        }
    }

    private static boolean isDownloadsDocument(Uri uri) {
        return "com.android.providers.downloads.documents".equals(uri.getAuthority());
    }

    private static boolean isExternalStorageDocument(Uri uri) {
        return "com.android.externalstorage.documents".equals(uri.getAuthority());
    }

    private static boolean isMediaDocument(Uri uri) {
        return "com.android.providers.media.documents".equals(uri.getAuthority());
    }

    public static void pickPhoto(Activity activity, int i) {
        Intent intent = new Intent("android.intent.action.GET_CONTENT");
        intent.setType(IConstants.ACCEPT_TYPE_IMAGE);
        activity.startActivityForResult(intent, i);
    }

    public static String saveBmp2Gallery(Bitmap bitmap, String str, Context context) {
        File file;
        FileOutputStream fileOutputStream;
        FileOutputStream fileOutputStream2 = null;
        r0 = null;
        FileOutputStream fileOutputStream3 = null;
        fileOutputStream2 = null;
        File file2 = null;
        try {
            try {
                try {
                    try {
                        file = new File(Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM + File.separator + AgentWebPermissions.ACTION_CAMERA + File.separator, str);
                        try {
                            fileOutputStream = new FileOutputStream(file.toString());
                        } catch (Exception e2) {
                            e = e2;
                        }
                    } catch (Exception e3) {
                        e = e3;
                        file = null;
                    } catch (Throwable th) {
                        th = th;
                        file = null;
                    }
                } catch (Throwable th2) {
                    th = th2;
                }
            } catch (Exception e4) {
                e = e4;
                file2 = file;
                e.printStackTrace();
                if (file2 == null) {
                }
            }
        } catch (Exception e5) {
            e = e5;
            e.printStackTrace();
            if (file2 == null) {
            }
        }
        try {
            fileOutputStream2 = 90;
            bitmap.compress(Bitmap.CompressFormat.PNG, 90, fileOutputStream);
            try {
                fileOutputStream.close();
            } catch (IOException e6) {
                e = e6;
                e.printStackTrace();
                file2 = file;
                Intent intent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
                intent.setData(Uri.fromFile(file2));
                context.sendBroadcast(intent);
                if (file2 == null) {
                }
            }
        } catch (Exception e7) {
            e = e7;
            fileOutputStream3 = fileOutputStream;
            e.getStackTrace();
            fileOutputStream2 = fileOutputStream3;
            if (fileOutputStream3 != null) {
                try {
                    fileOutputStream3.close();
                    fileOutputStream2 = fileOutputStream3;
                } catch (IOException e8) {
                    e = e8;
                    e.printStackTrace();
                    file2 = file;
                    Intent intent2 = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
                    intent2.setData(Uri.fromFile(file2));
                    context.sendBroadcast(intent2);
                    if (file2 == null) {
                    }
                }
            }
            file2 = file;
            Intent intent22 = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
            intent22.setData(Uri.fromFile(file2));
            context.sendBroadcast(intent22);
            if (file2 == null) {
            }
        } catch (Throwable th3) {
            th = th3;
            fileOutputStream2 = fileOutputStream;
            if (fileOutputStream2 != null) {
                try {
                    fileOutputStream2.close();
                } catch (IOException e9) {
                    e9.printStackTrace();
                }
            }
            throw th;
        }
        file2 = file;
        Intent intent222 = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE");
        intent222.setData(Uri.fromFile(file2));
        context.sendBroadcast(intent222);
        return file2 == null ? file2.getAbsolutePath() : "";
    }

    private static final Bitmap storeThumbnail(ContentResolver contentResolver, Bitmap bitmap, long j, float f, float f2, int i) {
        Matrix matrix = new Matrix();
        matrix.setScale(f / bitmap.getWidth(), f2 / bitmap.getHeight());
        Bitmap createBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        ContentValues contentValues = new ContentValues(4);
        contentValues.put("kind", Integer.valueOf(i));
        contentValues.put("image_id", Integer.valueOf((int) j));
        contentValues.put("height", Integer.valueOf(createBitmap.getHeight()));
        contentValues.put("width", Integer.valueOf(createBitmap.getWidth()));
        try {
            OutputStream openOutputStream = contentResolver.openOutputStream(contentResolver.insert(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, contentValues));
            createBitmap.compress(Bitmap.CompressFormat.JPEG, 100, openOutputStream);
            openOutputStream.close();
            return createBitmap;
        } catch (FileNotFoundException | IOException unused) {
            return null;
        }
    }

    public static void takePhoto(Activity activity, Uri uri, int i) {
        Intent intent = new Intent();
        intent.setAction("android.media.action.IMAGE_CAPTURE");
        intent.putExtra("output", uri);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        activity.startActivityForResult(intent, i);
    }

    public static void pickPhoto(Fragment fragment, int i) {
        Intent intent = new Intent("android.intent.action.GET_CONTENT");
        intent.setType(IConstants.ACCEPT_TYPE_IMAGE);
        fragment.startActivityForResult(intent, i);
    }

    public static void takePhoto(Fragment fragment, Uri uri, int i) {
        Intent intent = new Intent();
        intent.setAction("android.media.action.IMAGE_CAPTURE");
        intent.putExtra("output", uri);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        fragment.startActivityForResult(intent, i);
    }

    public static final String insertImage(ContentResolver contentResolver, Bitmap bitmap, String str, String str2) {
        Uri uri;
        ContentValues contentValues = new ContentValues();
        contentValues.put("title", str);
        contentValues.put("_display_name", str);
        contentValues.put("description", str2);
        contentValues.put("mime_type", "image/jpeg");
        contentValues.put("date_added", Long.valueOf(System.currentTimeMillis() / 1000));
        contentValues.put("datetaken", Long.valueOf(System.currentTimeMillis()));
        try {
            uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
        } catch (Exception unused) {
            uri = null;
        }
        try {
        } catch (Exception unused2) {
            if (uri != null) {
                contentResolver.delete(uri, null, null);
                uri = null;
            }
            if (uri != null) {
            }
        }
        if (bitmap != null) {
            OutputStream openOutputStream = contentResolver.openOutputStream(uri);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 50, openOutputStream);
            openOutputStream.close();
            long parseId = ContentUris.parseId(uri);
            storeThumbnail(contentResolver, MediaStore.Images.Thumbnails.getThumbnail(contentResolver, parseId, 1, null), parseId, 50.0f, 50.0f, 3);
            if (uri != null) {
                return uri.toString();
            }
            return null;
        }
        contentResolver.delete(uri, null, null);
        uri = null;
        if (uri != null) {
        }
    }

    public static void cropImageUri(Fragment fragment, Uri uri, Uri uri2, int i, int i2, int i3, int i4, int i5) {
        Intent intent = new Intent("com.android.imageselector_camera.action.CROP");
        if (Build.VERSION.SDK_INT >= 24) {
            intent.addFlags(1);
        }
        intent.setDataAndType(uri, IConstants.ACCEPT_TYPE_IMAGE);
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", i);
        intent.putExtra("aspectY", i2);
        intent.putExtra("outputX", i3);
        intent.putExtra("outputY", i4);
        intent.putExtra("scale", true);
        intent.putExtra("circleCrop", false);
        intent.putExtra("output", uri2);
        intent.putExtra("return-data", false);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);
        fragment.startActivityForResult(intent, i5);
    }
}