// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: ImageUtilities.java
package com.bocai.util;
import android.content.ContentResolver;
import android.graphics.*;
import android.net.Uri;
import android.util.Log;
import android.widget.ImageView;
import com.bocai.BocaiApplication;
import java.io.*;
// Referenced classes of package com.bocai.util:
// ExifProxy, Macros
public class ImageUtilities
{
public static final int ERR_OUT_OF_MEMORY = 156;
private static final String LOG_TAG = "ImageUtilities";
private static final android.graphics.BitmapFactory.Options _opt = new android.graphics.BitmapFactory.Options();
private static int lastError = 0;
static class TransformOptions
{
ExifProxy exif;
int height;
int maxHeight;
int maxWidth;
android.graphics.Bitmap.Config pixelConfig;
int width;
TransformOptions()
{
}
}
public ImageUtilities()
{
}
public static Bitmap decodeStream(InputStream inputstream, int i, int j, int k, android.graphics.Bitmap.Config config)
{
int l = 1;
while(i / 2 >= k && j / 2 >= k) {
i /= 2;
j /= 2;
l++;
}
android.graphics.BitmapFactory.Options options;
options = new android.graphics.BitmapFactory.Options();
options.inSampleSize = l;
options.inDither = false;
if(config == null)
config = android.graphics.Bitmap.Config.ARGB_8888;
options.inPreferredConfig = config;
Bitmap bitmap = null;
Rect rect = null;
bitmap = BitmapFactory.decodeStream(inputstream, rect, options);
return bitmap;
}
public static Bitmap getBorderedBitmap(Bitmap bitmap, int i, int j)
{
Bitmap bitmap1;
if(bitmap == null)
{
bitmap1 = null;
} else
{
int k = bitmap.getWidth();
int l = j * 2;
int i1 = k + l;
int j1 = bitmap.getHeight();
int k1 = j * 2;
int l1 = j1 + k1;
android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888;
Bitmap bitmap2 = Bitmap.createBitmap(i1, l1, config);
Canvas canvas = new Canvas(bitmap2);
Paint paint = new Paint();
paint.setAntiAlias(true);
canvas.drawColor(i);
float f = j;
float f1 = j;
canvas.drawBitmap(bitmap, f, f1, paint);
bitmap1 = bitmap2;
}
return bitmap1;
}
public static boolean getImageProperties(InputStream inputstream, android.graphics.BitmapFactory.Options options)
{
boolean flag;
if(inputstream != null)
{
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeStream(inputstream, null, options);
flag = true;
} else
{
flag = false;
}
return flag;
}
public static boolean getImageProperties(String s, android.graphics.BitmapFactory.Options options)
{
boolean flag = true;
if(s != null)
{
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(s, options);
} else
{
flag = false;
}
return flag;
}
public static int getLastError()
{
int i = lastError;
lastError = 0;
return i;
}
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int i)
{
int j = bitmap.getWidth();
int k = bitmap.getHeight();
android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888;
Bitmap bitmap1 = Bitmap.createBitmap(j, k, config);
Canvas canvas = new Canvas(bitmap1);
Paint paint = new Paint();
int l = bitmap.getWidth();
int i1 = bitmap.getHeight();
Rect rect = new Rect(0, 0, l, i1);
RectF rectf = new RectF(rect);
float f = i;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(0xff424242);
canvas.drawRoundRect(rectf, f, f, paint);
android.graphics.PorterDuff.Mode mode = android.graphics.PorterDuff.Mode.SRC_IN;
PorterDuffXfermode porterduffxfermode = new PorterDuffXfermode(mode);
android.graphics.Xfermode xfermode = paint.setXfermode(porterduffxfermode);
canvas.drawBitmap(bitmap, rect, rect, paint);
return bitmap1;
}
public static Bitmap scaleImage(InputStream inputstream, TransformOptions transformoptions)
{
Bitmap bitmap;
StringBuilder stringbuilder = (new StringBuilder()).append("scaleImage: in ").append(inputstream).append(" (");
int i = transformoptions.width;
StringBuilder stringbuilder1 = stringbuilder.append(i).append("x");
int j = transformoptions.height;
String s = stringbuilder1.append(j).append(")").toString();
int k = Log.d("ImageUtilities", s);
int l = transformoptions.width;
int i1 = transformoptions.height;
int j1 = transformoptions.maxWidth;
int k1 = transformoptions.maxHeight;
int l1 = Math.max(j1, k1);
android.graphics.Bitmap.Config config = transformoptions.pixelConfig;
bitmap = decodeStream(inputstream, l, i1, l1, config);
Bitmap bitmap1 = null;
if(bitmap != null) {
int i2;
int j2;
Matrix matrix;
i2 = bitmap.getWidth();
j2 = bitmap.getHeight();
int k2;
int l2;
float f;
float f1;
float f2;
float f3;
float f4;
float f5;
float f6;
float f7;
if(i2 >= j2)
{
k2 = i2;
l2 = j2;
} else
{
k2 = j2;
l2 = i2;
}
f = transformoptions.maxWidth;
f1 = k2;
f2 = f / f1;
f3 = transformoptions.maxHeight;
f4 = l2;
f5 = f3 / f4;
f6 = Math.min(f2, f5);
f7 = Math.min(1F, f6);
if((double)f7 >= 1D)
{
bitmap1 = bitmap;
//return bitmap1;
}
matrix = new Matrix();
matrix.postScale(f7, f7);
if(transformoptions.exif != null)
{
if(transformoptions.exif.getOrientation() == 3)
matrix.postRotate(180F);
else if(transformoptions.exif.getOrientation() == 8)
matrix.postRotate(270F);
if(transformoptions.exif.getOrientation() == 6)
matrix.postRotate(90F);
}
bitmap1 = Bitmap.createBitmap(bitmap, 0, 0, i2, j2, matrix, true);
//bitmap.recycle();
StringBuilder stringbuilder2 = (new StringBuilder()).append("scaleImage: rescaled image size (");
int i3 = bitmap1.getWidth();
StringBuilder stringbuilder3 = stringbuilder2.append(i3).append("x");
int j3 = bitmap1.getHeight();
String s1 = stringbuilder3.append(j3).append(")").toString();
Log.d("ImageUtilities", s1);
}
return bitmap1;
}
public static boolean scaleImage(Uri uri, File file, int i, int j)
{
boolean flag;
ExifProxy exifproxy2;
TransformOptions transformoptions = new TransformOptions();
transformoptions.maxWidth = i;
transformoptions.maxHeight = j;
ExifProxy exifproxy = new ExifProxy(uri);
transformoptions.exif = exifproxy;
StringBuilder stringbuilder = (new StringBuilder()).append("Dumping Exif data for ").append(uri).append("\n------------------------\n");
ExifProxy exifproxy1 = transformoptions.exif;
String s = stringbuilder.append(exifproxy1).toString();
int k = Log.d("ImageUtilities", s);
FileOutputStream fileoutputstream = null;
try {
fileoutputstream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
}
flag = scaleImage(uri, ((OutputStream) (fileoutputstream)), transformoptions);
try {
fileoutputstream.flush();
} catch (IOException e) {
}
try {
fileoutputstream.close();
} catch (IOException e) {
}
if(!flag || transformoptions.exif == null)
return false;
String s1 = file.getAbsolutePath();
exifproxy2 = new ExifProxy(s1);
if(exifproxy2 == null)
return false;
transformoptions.exif.copy(exifproxy2);
exifproxy2.setAttribute("Orientation", "0");
synchronized(_opt)
{
String s2 = file.getAbsolutePath();
android.graphics.BitmapFactory.Options options1 = _opt;
if(getImageProperties(s2, options1))
{
StringBuilder stringbuilder1 = (new StringBuilder()).append("");
int l = _opt.outWidth;
String s3 = stringbuilder1.append(l).toString();
exifproxy2.setAttribute("ImageWidth", s3);
StringBuilder stringbuilder2 = (new StringBuilder()).append("");
int i1 = _opt.outHeight;
String s4 = stringbuilder2.append(i1).toString();
exifproxy2.setAttribute("ImageLength", s4);
exifproxy2.saveAttributes();
}
}
StringBuilder stringbuilder3 = (new StringBuilder()).append("Dumping Exif data for ");
String s5 = file.getAbsolutePath();
String s6 = stringbuilder3.append(s5).append("\n------------------------\n").append(exifproxy2).toString();
Log.d("ImageUtilities", s6);
return flag;
}
public static boolean scaleImage(Uri uri, OutputStream outputstream, TransformOptions transformoptions)
{
ContentResolver contentresolver;
boolean flag;
contentresolver = Macros.FS_APPLICATION().getContentResolver();
flag = false;
synchronized(_opt) {
InputStream inputstream = null;
try {
inputstream = contentresolver.openInputStream(uri);
} catch (FileNotFoundException e) {
}
android.graphics.BitmapFactory.Options options = _opt;
flag = getImageProperties(inputstream, options);
if (flag) {
int i = _opt.outWidth;
transformoptions.width = i;
int j = _opt.outHeight;
transformoptions.height = j;
{
android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.ARGB_8888;
transformoptions.pixelConfig = config;
try {
flag = scaleImage(contentresolver.openInputStream(uri), outputstream, transformoptions);
} catch (FileNotFoundException e) {
}
if(flag || getLastError() != 65436)
return true;
int k = Log.d("ImageUtilities", "decodeStream: Failed to decode as RGB8888, attempting RGB565...");
android.graphics.Bitmap.Config config1 = android.graphics.Bitmap.Config.RGB_565;
transformoptions.pixelConfig = config1;
try {
flag = scaleImage(contentresolver.openInputStream(uri), outputstream, transformoptions);
} catch (FileNotFoundException e) {
}
}
return flag;
}
return false;
}
}
public static boolean scaleImage(InputStream inputstream, OutputStream outputstream, TransformOptions transformoptions)
{
Bitmap bitmap = scaleImage(inputstream, transformoptions);
boolean flag;
if(bitmap == null)
{
flag = false;
} else
{
android.graphics.Bitmap.CompressFormat compressformat = android.graphics.Bitmap.CompressFormat.JPEG;
boolean flag1 = bitmap.compress(compressformat, 80, outputstream);
bitmap.recycle();
flag = flag1;
}
return flag;
}
public static Bitmap scaleImageForImageView(Uri uri, ImageView imageview)
{
Bitmap bitmap;
ContentResolver contentresolver;
bitmap = null;
contentresolver = Macros.FS_APPLICATION().getContentResolver();
TransformOptions transformoptions = new TransformOptions();
synchronized(_opt) {
InputStream inputstream = null;
android.graphics.BitmapFactory.Options options;
try {
inputstream = contentresolver.openInputStream(uri);
} catch (FileNotFoundException e) {
}
options = _opt;
if(getImageProperties(inputstream, options)) {
int j = _opt.outWidth;
transformoptions.width = j;
int k = _opt.outHeight;
transformoptions.height = k;
int j1;
int k1;
int l = imageview.getWidth();
int i1 = imageview.getHeight();
j1 = Math.max(l, i1);
k1 = 1024;
while (true) {
if(k1 <= 32) {
transformoptions.maxWidth = k1;
transformoptions.maxHeight = k1;
android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.RGB_565;
transformoptions.pixelConfig = config;
String s2 = (new StringBuilder()).append("scaleImageForImageView: imageView size ").append(k1).append(" x ").append(k1).toString();
int i2 = Log.d("ImageUtilities", s2);
try {
bitmap = scaleImage(contentresolver.openInputStream(uri), transformoptions);
} catch (FileNotFoundException e) {
}
return bitmap;
} else {
int i = k1 / 2;
if (j1 > i) {
transformoptions.maxWidth = k1;
transformoptions.maxHeight = k1;
android.graphics.Bitmap.Config config = android.graphics.Bitmap.Config.RGB_565;
transformoptions.pixelConfig = config;
String s2 = (new StringBuilder()).append("scaleImageForImageView: imageView size ").append(k1).append(" x ").append(k1).toString();
Log.d("ImageUtilities", s2);
try {
bitmap = scaleImage(contentresolver.openInputStream(uri), transformoptions);
} catch (FileNotFoundException e) {
}
return bitmap;
} else {
k1 >>= 1;
}
}
}
}
return bitmap;
}
}
}