CrackMe.apk
Download file
package com.facebook.imageutils;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.ColorSpace;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.util.Pair;
import androidx.core.util.Pools;
import com.facebook.common.internal.Preconditions;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.nio.ByteBuffer;
import javax.annotation.Nullable;
public final class BitmapUtil {
public static final int ALPHA_8_BYTES_PER_PIXEL = 1;
public static final int ARGB_4444_BYTES_PER_PIXEL = 2;
public static final int ARGB_8888_BYTES_PER_PIXEL = 4;
private static final Pools.SynchronizedPool<ByteBuffer> DECODE_BUFFERS = new Pools.SynchronizedPool<>(12);
private static final int DECODE_BUFFER_SIZE = 16384;
public static final float MAX_BITMAP_SIZE = 2048.0f;
private static final int POOL_SIZE = 12;
public static final int RGBA_F16_BYTES_PER_PIXEL = 8;
public static final int RGB_565_BYTES_PER_PIXEL = 2;
public static int getSizeInBytes(@Nullable Bitmap bitmap) {
if (bitmap == null) {
return 0;
}
if (Build.VERSION.SDK_INT > 19) {
try {
return bitmap.getAllocationByteCount();
} catch (NullPointerException unused) {
}
}
if (Build.VERSION.SDK_INT >= 12) {
return bitmap.getByteCount();
}
return bitmap.getRowBytes() * bitmap.getHeight();
}
@Nullable
public static Pair<Integer, Integer> decodeDimensions(byte[] bArr) {
return decodeDimensions((InputStream) new ByteArrayInputStream(bArr));
}
@Nullable
public static Pair<Integer, Integer> decodeDimensions(Uri uri) {
Preconditions.checkNotNull(uri);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(uri.getPath(), options);
if (options.outWidth == -1 || options.outHeight == -1) {
return null;
}
return new Pair<>(Integer.valueOf(options.outWidth), Integer.valueOf(options.outHeight));
}
@Nullable
public static Pair<Integer, Integer> decodeDimensions(InputStream inputStream) {
Preconditions.checkNotNull(inputStream);
Pools.SynchronizedPool<ByteBuffer> synchronizedPool = DECODE_BUFFERS;
ByteBuffer acquire = synchronizedPool.acquire();
if (acquire == null) {
acquire = ByteBuffer.allocate(16384);
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
try {
options.inTempStorage = acquire.array();
Pair<Integer, Integer> pair = null;
BitmapFactory.decodeStream(inputStream, (Rect) null, options);
if (options.outWidth != -1) {
if (options.outHeight != -1) {
pair = new Pair<>(Integer.valueOf(options.outWidth), Integer.valueOf(options.outHeight));
}
}
synchronizedPool.release(acquire);
return pair;
} catch (Throwable th) {
DECODE_BUFFERS.release(acquire);
throw th;
}
}
public static ImageMetaData decodeDimensionsAndColorSpace(InputStream inputStream) {
Preconditions.checkNotNull(inputStream);
Pools.SynchronizedPool<ByteBuffer> synchronizedPool = DECODE_BUFFERS;
ByteBuffer acquire = synchronizedPool.acquire();
if (acquire == null) {
acquire = ByteBuffer.allocate(16384);
}
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
try {
options.inTempStorage = acquire.array();
ColorSpace colorSpace = null;
BitmapFactory.decodeStream(inputStream, (Rect) null, options);
if (Build.VERSION.SDK_INT >= 26) {
colorSpace = options.outColorSpace;
}
ImageMetaData imageMetaData = new ImageMetaData(options.outWidth, options.outHeight, colorSpace);
synchronizedPool.release(acquire);
return imageMetaData;
} catch (Throwable th) {
DECODE_BUFFERS.release(acquire);
throw th;
}
}
/* renamed from: com.facebook.imageutils.BitmapUtil$1 reason: invalid class name */
static /* synthetic */ class AnonymousClass1 {
static final /* synthetic */ int[] $SwitchMap$android$graphics$Bitmap$Config;
/* JADX WARNING: Can't wrap try/catch for region: R(14:0|1|2|3|4|5|6|7|8|9|10|11|12|14) */
/* JADX WARNING: Failed to process nested try/catch */
/* JADX WARNING: Missing exception handler attribute for start block: B:11:0x003e */
/* JADX WARNING: Missing exception handler attribute for start block: B:3:0x0012 */
/* JADX WARNING: Missing exception handler attribute for start block: B:5:0x001d */
/* JADX WARNING: Missing exception handler attribute for start block: B:7:0x0028 */
/* JADX WARNING: Missing exception handler attribute for start block: B:9:0x0033 */
static {
/*
android.graphics.Bitmap$Config[] r0 = android.graphics.Bitmap.Config.values()
int r0 = r0.length
int[] r0 = new int[r0]
$SwitchMap$android$graphics$Bitmap$Config = r0
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.ARGB_8888 // Catch:{ NoSuchFieldError -> 0x0012 }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x0012 }
r2 = 1
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x0012 }
L_0x0012:
int[] r0 = $SwitchMap$android$graphics$Bitmap$Config // Catch:{ NoSuchFieldError -> 0x001d }
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.ALPHA_8 // Catch:{ NoSuchFieldError -> 0x001d }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x001d }
r2 = 2
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x001d }
L_0x001d:
int[] r0 = $SwitchMap$android$graphics$Bitmap$Config // Catch:{ NoSuchFieldError -> 0x0028 }
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.ARGB_4444 // Catch:{ NoSuchFieldError -> 0x0028 }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x0028 }
r2 = 3
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x0028 }
L_0x0028:
int[] r0 = $SwitchMap$android$graphics$Bitmap$Config // Catch:{ NoSuchFieldError -> 0x0033 }
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.RGB_565 // Catch:{ NoSuchFieldError -> 0x0033 }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x0033 }
r2 = 4
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x0033 }
L_0x0033:
int[] r0 = $SwitchMap$android$graphics$Bitmap$Config // Catch:{ NoSuchFieldError -> 0x003e }
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.RGBA_F16 // Catch:{ NoSuchFieldError -> 0x003e }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x003e }
r2 = 5
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x003e }
L_0x003e:
int[] r0 = $SwitchMap$android$graphics$Bitmap$Config // Catch:{ NoSuchFieldError -> 0x0049 }
android.graphics.Bitmap$Config r1 = android.graphics.Bitmap.Config.HARDWARE // Catch:{ NoSuchFieldError -> 0x0049 }
int r1 = r1.ordinal() // Catch:{ NoSuchFieldError -> 0x0049 }
r2 = 6
r0[r1] = r2 // Catch:{ NoSuchFieldError -> 0x0049 }
L_0x0049:
return
*/
throw new UnsupportedOperationException("Method not decompiled: com.facebook.imageutils.BitmapUtil.AnonymousClass1.<clinit>():void");
}
}
public static int getPixelSizeForBitmapConfig(Bitmap.Config config) {
switch (AnonymousClass1.$SwitchMap$android$graphics$Bitmap$Config[config.ordinal()]) {
case 1:
return 4;
case 2:
return 1;
case 3:
case 4:
return 2;
case 5:
return 8;
case 6:
return 4;
default:
throw new UnsupportedOperationException("The provided Bitmap.Config is not supported");
}
}
public static int getSizeInByteForBitmap(int i, int i2, Bitmap.Config config) {
return i * i2 * getPixelSizeForBitmapConfig(config);
}
}
Download file