03_美图秀秀实现思路

LOMO其实是一个早期的苏联的相机厂。五六十年代产了一些廉价的比较实用的相机。后来苏联解体之后这个相机厂就不产了。九十年代的时候有一个叫杰克的哥们,去货摊上找到了一个全新的没开封的这个LOMO相机,照了一系列的照片就是这个效果,四周暗,中间亮,然后就给它发到BBS上。淘宝上也有卖的,20或者30块钱,就是一个塑料盒子然后上面一个镜头。最主要它是用胶卷,可能这个胶卷比这个相机还贵。

 也没什么对焦之类的,反正就把人放里面按一下按钮就完事了。这也就是一个定焦的镜头。有四个镜头的,四个镜头的就分别曝光,就可以去照出一组动图。一顿饭钱就这么一个相机。

因为当时LOMO相机生产的工艺不太好,镜头的质量比较差,所以它就有四周暗中间亮的效果。怎么去实现LOMO的效果。


首先要反编译美图秀秀的Java代码。

由于这个版本比较早,那个时候美图秀秀的工作室也没有对它进行反编译。

EditCutActivity  编辑剪切的Activity.EditBrightActivity.

想看它图片特效是怎么处理的?有一个ImageProcess图片处理的类.图片处理的类封装了很多静态方法.

package com.mt.mtxx.image;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.media.ExifInterface;
import com.mt.mtxx.mtxx.MTDebug;
import com.mt.mtxx.mtxx.MyData;
import java.io.IOException;
import java.io.InputStream;

public class ImageProcess
{
  private static float[] DELTA_INDEX = { 0.0F, 0.01F, 0.02F, 0.04F, 0.05F, 0.06F, 0.07F, 0.08F, 0.1F, 0.11F, 0.12F, 0.14F, 0.15F, 0.16F, 0.17F, 0.18F, 0.2F, 0.21F, 0.22F, 0.24F, 0.25F, 0.27F, 0.28F, 0.3F, 0.32F, 0.34F, 0.36F, 0.38F, 0.4F, 0.42F, 0.44F, 0.46F, 0.48F, 0.5F, 0.53F, 0.56F, 0.59F, 0.62F, 0.65F, 0.68F, 0.71F, 0.74F, 0.77F, 0.8F, 0.83F, 0.86F, 0.89F, 0.92F, 0.95F, 0.98F, 1.0F, 1.06F, 1.12F, 1.18F, 1.24F, 1.3F, 1.36F, 1.42F, 1.48F, 1.54F, 1.6F, 1.66F, 1.72F, 1.78F, 1.84F, 1.9F, 1.96F, 2.0F, 2.12F, 2.25F, 2.37F, 2.5F, 2.62F, 2.75F, 2.87F, 3.0F, 3.2F, 3.4F, 3.6F, 3.8F, 4.0F, 4.3F, 4.7F, 4.9F, 5.0F, 5.5F, 6.0F, 6.5F, 6.8F, 7.0F, 7.3F, 7.5F, 7.8F, 8.0F, 8.4F, 8.7F, 9.0F, 9.4F, 9.6F, 9.8F, 10.0F };
  private static JNI jni = new JNI();

  public static Bitmap AutoWhiteBalance(Bitmap paramBitmap)//自动白平衡 好一点的相机都有这样的功能 设置一个白平衡  先找准这个白色的 然后其他的颜色才能跟着一起准 当你从一个环境进到另外一个环境  比如说白色光灯环境  绿色光灯环境 可能这个白色都得重新调一调 这就是自动白平衡
  { 
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();//获得了当前的时间.
      int i = paramBitmap.getWidth();//获取Bitmap的宽度
      int j = paramBitmap.getHeight();//获取Bitmap的高度
      byte[] arrayOfByte = bitmap2ByteARGB(paramBitmap);//拿到了一个byte类型的数组
      jni.AutoWhiteBalance(arrayOfByte, i, j);
      localBitmap = bytesARGB2Bimap(arrayOfByte, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("AutoWhiteBalance time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap BackWeak(int[] paramArrayOfInt1, int[] paramArrayOfInt2, int paramInt1, int paramInt2, int paramInt3, int paramInt4, byte[] paramArrayOfByte, int paramInt5, int paramInt6)
  {
    try
    {
      MTDebug.Print("BackWeak width=" + paramInt1 + " height=" + paramInt2 + " total=" + paramInt1 * paramInt2 + " nOutsideRound=" + paramInt6);
      if (paramArrayOfInt1.length < paramInt1 * paramInt2)
      {
        MTDebug.PrintError("[BackWeak] DstImage.length=" + paramArrayOfInt1.length);
        return null;
      }
      if (paramArrayOfInt2.length < paramInt1 * paramInt2)
      {
        StringBuilder localStringBuilder = new StringBuilder("[BackWeak] SrcImage.length=");
        MTDebug.PrintError(paramArrayOfInt2.length);
        return null;
      }
      int i = 1 + paramInt6 * 2;
      if (paramArrayOfByte.length < i * i)
      {
        MTDebug.PrintError("[BackWeak] alphaRect.length=" + paramArrayOfByte.length);
        return null;
        MTDebug.Print("[Error][BackWeak] BackWeak");
        return null;
        jni.BackWeakOne(paramArrayOfInt1, paramArrayOfInt2, paramInt1, paramInt2, paramInt3, paramInt4, paramArrayOfByte, paramInt5, paramInt6);
        Bitmap localBitmap2 = intARGB2Bimap(paramArrayOfInt1, paramInt1, paramInt2);
        localBitmap1 = localBitmap2;
        return localBitmap1;
      }
    }
    catch (Exception localException)
    {
      while (true)
      {
        localException.printStackTrace();
        Bitmap localBitmap1 = null;
        continue;
        if ((paramArrayOfInt1 == null) || (paramArrayOfInt2 == null))
          continue;
        if (paramArrayOfByte != null)
          continue;
      }
    }
  }

  public static Bitmap BackWeak2(byte[] paramArrayOfByte1, int paramInt1, int paramInt2, int paramInt3, int paramInt4, byte[] paramArrayOfByte2, int paramInt5, int paramInt6)
  {
    try
    {
      if (paramArrayOfByte1.length < paramInt1 * paramInt2)
      {
        MTDebug.Print("[Error][BackWeakLine] SrcImage.length=" + paramArrayOfByte1.length);
        return null;
      }
      int i = 1 + paramInt6 * 2;
      if (paramArrayOfByte2.length < i * i)
      {
        MTDebug.Print("[Error][BackWeakLine] alphaRect.length=" + paramArrayOfByte2.length + " nOutsideRound=" + paramInt6);
        return null;
      }
      jni.BackWeak2(paramArrayOfByte1, paramInt1, paramInt2, paramInt3, paramInt4, paramArrayOfByte2, paramInt5, paramInt6);
      Bitmap localBitmap2 = bytesARGB2Bimap(paramArrayOfByte1, paramInt1, paramInt2);
      localBitmap1 = localBitmap2;
      return localBitmap1;
    }
    catch (Exception localException)
    {
      while (true)
      {
        localException.printStackTrace();
        Bitmap localBitmap1 = null;
      }
    }
  }

  public static Bitmap BackWeakLine(int[] paramArrayOfInt1, int[] paramArrayOfInt2, int paramInt1, int paramInt2, int[] paramArrayOfInt3, int[] paramArrayOfInt4, float paramFloat, int paramInt3, int paramInt4)
  {
    try
    {
      if (paramArrayOfInt1.length < paramInt1 * paramInt2)
      {
        MTDebug.PrintError("[Error][BackWeakLine] DstImage.length=" + paramArrayOfInt1.length);
        return null;
      }
      if (paramArrayOfInt2.length < paramInt1 * paramInt2)
      {
        MTDebug.PrintError("[Error][BackWeakLine] SrcImage.length=" + paramArrayOfInt2.length);
        return null;
      }
      if (paramArrayOfInt3.length != 8)
      {
        MTDebug.PrintError("[Error][BackWeakLine] x.length=" + paramArrayOfInt3.length);
        return null;
      }
      if (paramArrayOfInt4.length != 8)
      {
        MTDebug.PrintError("[Error][BackWeakLine] y.length=" + paramArrayOfInt4.length);
        return null;
        MTDebug.PrintError("[Error] BackWeakLine");
        return null;
        jni.BackWeakLine(paramArrayOfInt1, paramArrayOfInt2, paramInt1, paramInt2, paramArrayOfInt3, paramArrayOfInt4, paramFloat, paramInt3, paramInt4);
        Bitmap localBitmap2 = intARGB2Bimap(paramArrayOfInt1, paramInt1, paramInt2);
        localBitmap1 = localBitmap2;
        return localBitmap1;
      }
    }
    catch (Exception localException)
    {
      while (true)
      {
        localException.printStackTrace();
        Bitmap localBitmap1 = null;
        continue;
        if ((paramArrayOfInt1 == null) || (paramArrayOfInt2 == null) || (paramArrayOfInt3 == null))
          continue;
        if (paramArrayOfInt4 != null)
          continue;
      }
    }
  }

  public static Bitmap Bmp565ToBmp888(Bitmap paramBitmap, boolean paramBoolean)
  {
    try
    {
      if (paramBitmap.getConfig() == Bitmap.Config.RGB_565)
      {
        Bitmap localBitmap2 = paramBitmap.copy(Bitmap.Config.ARGB_8888, true);
        localBitmap1 = localBitmap2;
        return localBitmap1;
      }
      return paramBitmap;
    }
    catch (Exception localException)
    {
      while (true)
      {
        MTDebug.Print("FittingWindow " + localException.toString());
        localException.printStackTrace();
        Bitmap localBitmap1 = null;
      }
    }
  }

  public static Bitmap Clone(Bitmap paramBitmap)
  {
    try
    {
      Bitmap localBitmap = paramBitmap.copy(MyData.mConfig, true);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap FaceBeauty(Bitmap paramBitmap, int paramInt, boolean paramBoolean)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      if (paramBoolean)
        paramBitmap.recycle();
      jni.FaceBeauty(arrayOfInt, i, j, paramInt);
      Bitmap localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static void FaceBeautyRelease()
  {
    try
    {
      jni.FaceBeautyRelease();
      return;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }

  public static Bitmap FittingWindow(Bitmap paramBitmap, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Object localObject = null;
    while (true)
    {
      int m;
      int k;
      try
      {
        int i = paramBitmap.getWidth();
        int j = paramBitmap.getHeight();
        if (i * paramInt2 <= j * paramInt1)
          continue;
        m = paramInt1;
        k = j * paramInt1 / i;
        float f1 = m / i;
        MTDebug.Print("scale=" + f1);
        float f2 = (int)(f1 * 1000.0F) / 1000.0F;
        Matrix localMatrix = new Matrix();
        localMatrix.reset();
        localMatrix.preScale(f2, f2);
        MTDebug.Print("srcW=" + i + " srcH=" + j + " scale=" + f2 + " w=" + paramInt1 + " h=" + paramInt2);
        if (paramBitmap == null)
        {
          MTDebug.Print("2aMTXX src == null");
          if (i != m)
            break label318;
          localObject = null;
          if (j != k)
            break label318;
          localObject = paramBitmap.copy(paramBitmap.getConfig(), true);
          MTDebug.Print("FittingWindow copy");
          if (!paramBoolean)
            break;
          paramBitmap.recycle();
          return localObject;
          k = paramInt2;
          m = i * paramInt2 / j;
          f1 = k / j;
          MTDebug.Print("scale=" + f1);
          continue;
        }
      }
      catch (Exception localException)
      {
        MTDebug.Print("FittingWindow " + localException.toString());
        localException.printStackTrace();
        return localObject;
      }
      if (!paramBitmap.isRecycled())
        continue;
      MTDebug.Print("3aMTXX src.isRecycled()");
      continue;
      label318: Bitmap localBitmap = createScaledBitmap(paramBitmap, m, k, paramBitmap.getConfig());
      localObject = localBitmap;
    }
    return (Bitmap)localObject;
  }

  public static Bitmap FittingWindow888(Bitmap paramBitmap, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Object localObject = null;
    while (true)
    {
      int i;
      int j;
      try
      {
        i = paramBitmap.getWidth();
        j = paramBitmap.getHeight();
        if (i * paramInt2 <= j * paramInt1)
          continue;
        (j * paramInt1 / i);
        float f1 = paramInt1 / i;
        MTDebug.Print("scale=" + f1);
        float f2 = (int)(f1 * 1000.0F) / 1000.0F;
        Matrix localMatrix = new Matrix();
        localMatrix.reset();
        localMatrix.preScale(f2, f2);
        MTDebug.Print("srcW=" + i + " srcH=" + j + " scale=" + f2 + " w=" + paramInt1 + " h=" + paramInt2);
        if (paramBitmap == null)
        {
          MTDebug.Print("2aMTXX src == null");
          boolean bool = f2 < 1.0F;
          localObject = null;
          if (bool)
            break label304;
          localObject = paramBitmap.copy(Bitmap.Config.ARGB_8888, true);
          MTDebug.Print("FittingWindow copy");
          if (!paramBoolean)
            break;
          paramBitmap.recycle();
          return localObject;
          (i * paramInt2 / j);
          f1 = paramInt2 / j;
          MTDebug.Print("scale=" + f1);
          continue;
        }
      }
      catch (Exception localException)
      {
        MTDebug.Print("FittingWindow " + localException.toString());
        localException.printStackTrace();
        return localObject;
      }
      if (!paramBitmap.isRecycled())
        continue;
      MTDebug.Print("3aMTXX src.isRecycled()");
      continue;
      label304: Bitmap localBitmap = createScaledBitmap(paramBitmap, i, j, Bitmap.Config.ARGB_8888);
      localObject = localBitmap;
    }
    return (Bitmap)localObject;
  }

  public static Bitmap FittingWindowSave(Bitmap paramBitmap, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Object localObject = null;
    try
    {
      MTDebug.Print("FittingWindowSave w=" + paramInt1 + " h=" + paramInt2 + " srcW=" + paramBitmap.getWidth() + " srcH=" + paramBitmap.getHeight());
      int i = paramBitmap.getWidth();
      localObject = null;
      if ((i <= paramInt1) && (paramBitmap.getHeight() <= paramInt2))
        return paramBitmap;
      int j = paramBitmap.getWidth();
      int k = paramBitmap.getHeight();
      int n;
      int m;
      if (j * paramInt2 > k * paramInt1)
      {
        n = paramInt1;
        m = k * paramInt1 / j;
        (n / j);
        if (j != n)
          break label232;
        localObject = null;
        if (k != m)
          break label232;
        localObject = paramBitmap.copy(MyData.mConfig, true);
        MTDebug.Print("FittingWindowSave copy");
      }
      while (true)
      {
        if (paramBoolean)
          paramBitmap.recycle();
        MTDebug.Print("w=" + ((Bitmap)localObject).getWidth() + " h=" + ((Bitmap)localObject).getHeight());
        break label263;
        m = paramInt2;
        n = j * paramInt2 / k;
        (m / k);
        break;
        label232: Bitmap localBitmap = createScaledBitmap(paramBitmap, n, m, paramBitmap.getConfig());
        localObject = localBitmap;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    label263: return (Bitmap)localObject;
  }

  // ERROR //
  public static Bitmap FrameColorful(Bitmap paramBitmap, String paramString, int paramInt, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 8
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 10
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 11
    //   17: aload_0
    //   18: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   21: astore 12
    //   23: iload 4
    //   25: ifeq +7 -> 32
    //   28: aload_0
    //   29: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   32: aload_1
    //   33: aload_3
    //   34: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   37: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   40: astore 13
    //   42: iload 10
    //   44: iload 11
    //   46: if_icmple +168 -> 214
    //   49: iload_2
    //   50: iconst_1
    //   51: iand
    //   52: iconst_1
    //   53: if_icmpne +161 -> 214
    //   56: aload 13
    //   58: iconst_1
    //   59: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   62: iload 10
    //   64: iload 11
    //   66: iconst_1
    //   67: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   70: astore 15
    //   72: aload 15
    //   74: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   77: astore 16
    //   79: new 150    java/lang/StringBuilder
    //   82: dup
    //   83: ldc_w 343
    //   86: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   89: aload 12
    //   91: arraylength
    //   92: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   95: ldc_w 345
    //   98: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   101: aload 16
    //   103: arraylength
    //   104: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   107: ldc_w 297
    //   110: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   113: iload 10
    //   115: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   118: ldc 180
    //   120: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   123: iload 11
    //   125: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   128: ldc_w 347
    //   131: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   134: iload_2
    //   135: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   138: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   141: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   144: aload 15
    //   146: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   149: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   152: aload 12
    //   154: aload 16
    //   156: iload 10
    //   158: iload 11
    //   160: iload_2
    //   161: invokevirtual 351    com/mt/mtxx/image/JNI:FrameXCBK    ([I[IIII)V
    //   164: invokestatic 354    java/lang/System:gc    ()V
    //   167: aload 12
    //   169: iload 10
    //   171: iload 11
    //   173: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   176: astore 17
    //   178: aload 17
    //   180: astore 7
    //   182: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   185: lload 8
    //   187: lsub
    //   188: lstore 18
    //   190: new 150    java/lang/StringBuilder
    //   193: dup
    //   194: ldc_w 356
    //   197: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   200: lload 18
    //   202: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   205: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   208: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   211: aload 7
    //   213: areturn
    //   214: aload 13
    //   216: iload 10
    //   218: iload 11
    //   220: iconst_1
    //   221: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   224: astore 14
    //   226: aload 14
    //   228: astore 15
    //   230: goto -158 -> 72
    //   233: astore 5
    //   235: aload 5
    //   237: astore 6
    //   239: aconst_null
    //   240: astore 7
    //   242: aload 6
    //   244: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   247: aload 7
    //   249: areturn
    //   250: astore 6
    //   252: goto -10 -> 242
    //
    // Exception table:
    //   from    to    target    type
    //   0    23    233    java/lang/Exception
    //   28    32    233    java/lang/Exception
    //   32    42    233    java/lang/Exception
    //   56    72    233    java/lang/Exception
    //   72    178    233    java/lang/Exception
    //   214    226    233    java/lang/Exception
    //   182    211    250    java/lang/Exception
  }

  public static Bitmap GaussIIRBlurBrush(Bitmap paramBitmap, int paramInt1, int paramInt2)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      jni.GaussIIRBlurBrush(arrayOfInt, paramInt1, paramInt2, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("GaussIIRBlurBrush time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static int[] GaussIIRBlurBrush2(Bitmap paramBitmap, int paramInt1, int paramInt2)
  {
    int[] arrayOfInt = (int[])null;
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      arrayOfInt = bitmap2IntARGB(paramBitmap);
      jni.GaussIIRBlurBrush(arrayOfInt, paramInt1, paramInt2, i, j);
      return arrayOfInt;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return arrayOfInt;
  }

  public static Bitmap GaussIIRBlurImage(Bitmap paramBitmap, int paramInt1, int paramInt2)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      byte[] arrayOfByte = bitmap2ByteARGB(paramBitmap);
      jni.GaussIIRBlurImage(arrayOfByte, paramInt1, paramInt2, i, j);
      Bitmap localBitmap = bytesARGB2Bimap(arrayOfByte, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap Grayscale(Bitmap paramBitmap)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      byte[] arrayOfByte = bitmap2ByteARGB(paramBitmap);
      jni.Grayscale(arrayOfByte, i, j);
      Bitmap localBitmap = bytesARGB2Bimap(arrayOfByte, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap LoadAssertsPic(String paramString, AssetManager paramAssetManager)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      MTDebug.Print("LoadAssertsPic path=" + paramString);
      InputStream localInputStream = paramAssetManager.open(paramString);
      BitmapFactory.Options localOptions = new BitmapFactory.Options();
      localOptions.inDither = false;
      localOptions.inPreferredConfig = MyData.mConfig;
      localBitmap = BitmapFactory.decodeStream(localInputStream, null, localOptions);
      localInputStream.close();
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("LoadAssertsPic time=" + l2);
      return localBitmap;
    }
    catch (IOException localIOException)
    {
      localIOException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap MoveBmpToMiddle(Bitmap paramBitmap, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramInt1, paramInt2, paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      int i = (paramInt1 - paramBitmap.getWidth()) / 2;
      int j = (paramInt2 - paramBitmap.getHeight()) / 2;
      Paint localPaint = new Paint();
      localPaint.setAntiAlias(true);
      localCanvas.drawBitmap(paramBitmap, i, j, localPaint);
      if (paramBoolean)
        paramBitmap.recycle();
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap OpenPic(String paramString)
  {
    BitmapFactory.Options localOptions = new BitmapFactory.Options();
    localOptions.inDither = false;
    return BitmapFactory.decodeFile(paramString, localOptions);
  }

  public static Bitmap OpenPic(String paramString, int paramInt1, int paramInt2)
  {
    BitmapFactory.Options localOptions = new BitmapFactory.Options();
    localOptions.outWidth = paramInt1;
    localOptions.outHeight = paramInt2;
    return BitmapFactory.decodeFile(paramString, localOptions);
  }

  // ERROR //
  public static Bitmap PreviewBigPic(String paramString, Bitmap.Config paramConfig)
  {
    // Byte code:
    //   0: new 449    java/io/File
    //   3: dup
    //   4: aload_0
    //   5: invokespecial 450    java/io/File:<init>    (Ljava/lang/String;)V
    //   8: astore_2
    //   9: ldc_w 452
    //   12: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   15: pop2
    //   16: new 386    android/graphics/BitmapFactory$Options
    //   19: dup
    //   20: invokespecial 387    android/graphics/BitmapFactory$Options:<init>    ()V
    //   23: astore 6
    //   25: aload 6
    //   27: iconst_1
    //   28: putfield 459    android/graphics/BitmapFactory$Options:inJustDecodeBounds    Z
    //   31: new 461    java/io/FileInputStream
    //   34: dup
    //   35: aload_2
    //   36: invokespecial 464    java/io/FileInputStream:<init>    (Ljava/io/File;)V
    //   39: astore 7
    //   41: aload 7
    //   43: aconst_null
    //   44: aload 6
    //   46: invokestatic 400    android/graphics/BitmapFactory:decodeStream    (Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
    //   49: pop
    //   50: aload 7
    //   52: invokevirtual 465    java/io/FileInputStream:close    ()V
    //   55: aload 6
    //   57: getfield 440    android/graphics/BitmapFactory$Options:outWidth    I
    //   60: istore 10
    //   62: aload 6
    //   64: getfield 443    android/graphics/BitmapFactory$Options:outHeight    I
    //   67: istore 11
    //   69: new 150    java/lang/StringBuilder
    //   72: dup
    //   73: ldc_w 467
    //   76: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   79: iload 10
    //   81: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   84: ldc_w 469
    //   87: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   90: iload 11
    //   92: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   95: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   98: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   101: iconst_1
    //   102: istore 12
    //   104: iload 10
    //   106: sipush 1200
    //   109: if_icmpge +234 -> 343
    //   112: iload 11
    //   114: sipush 1200
    //   117: if_icmpge +226 -> 343
    //   120: new 150    java/lang/StringBuilder
    //   123: dup
    //   124: ldc_w 471
    //   127: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   130: iload 12
    //   132: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   135: ldc_w 473
    //   138: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   141: iload 10
    //   143: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   146: ldc_w 469
    //   149: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   152: iload 11
    //   154: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   157: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   160: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   163: ldc_w 475
    //   166: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   169: pop2
    //   170: iload 12
    //   172: iconst_1
    //   173: if_icmple +201 -> 374
    //   176: new 386    android/graphics/BitmapFactory$Options
    //   179: dup
    //   180: invokespecial 387    android/graphics/BitmapFactory$Options:<init>    ()V
    //   183: astore 15
    //   185: aload 15
    //   187: iload 12
    //   189: putfield 478    android/graphics/BitmapFactory$Options:inSampleSize    I
    //   192: aload 15
    //   194: iconst_0
    //   195: putfield 459    android/graphics/BitmapFactory$Options:inJustDecodeBounds    Z
    //   198: aload 15
    //   200: iconst_0
    //   201: putfield 391    android/graphics/BitmapFactory$Options:inDither    Z
    //   204: aload 15
    //   206: aload_1
    //   207: putfield 394    android/graphics/BitmapFactory$Options:inPreferredConfig    Landroid/graphics/Bitmap$Config;
    //   210: new 150    java/lang/StringBuilder
    //   213: dup
    //   214: ldc_w 480
    //   217: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   220: iload 12
    //   222: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   225: ldc_w 473
    //   228: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   231: iload 10
    //   233: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   236: ldc_w 469
    //   239: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   242: iload 11
    //   244: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   247: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   250: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   253: new 461    java/io/FileInputStream
    //   256: dup
    //   257: aload_2
    //   258: invokespecial 464    java/io/FileInputStream:<init>    (Ljava/io/File;)V
    //   261: astore 16
    //   263: aload 16
    //   265: aconst_null
    //   266: aload 15
    //   268: invokestatic 400    android/graphics/BitmapFactory:decodeStream    (Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
    //   271: astore 17
    //   273: new 150    java/lang/StringBuilder
    //   276: dup
    //   277: ldc_w 482
    //   280: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   283: aload 17
    //   285: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   288: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   291: ldc_w 299
    //   294: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   297: aload 17
    //   299: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   302: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   305: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   308: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   311: ldc_w 484
    //   314: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   317: pop2
    //   318: aload 16
    //   320: invokevirtual 465    java/io/FileInputStream:close    ()V
    //   323: aload 17
    //   325: areturn
    //   326: astore 9
    //   328: aload 9
    //   330: invokevirtual 408    java/io/IOException:printStackTrace    ()V
    //   333: goto -278 -> 55
    //   336: astore_3
    //   337: aload_3
    //   338: invokevirtual 485    java/io/FileNotFoundException:printStackTrace    ()V
    //   341: aconst_null
    //   342: areturn
    //   343: iload 10
    //   345: iconst_2
    //   346: idiv
    //   347: istore 10
    //   349: iload 11
    //   351: iconst_2
    //   352: idiv
    //   353: istore 11
    //   355: iload 12
    //   357: iconst_2
    //   358: imul
    //   359: istore 12
    //   361: goto -257 -> 104
    //   364: astore 20
    //   366: aload 20
    //   368: invokevirtual 408    java/io/IOException:printStackTrace    ()V
    //   371: aload 17
    //   373: areturn
    //   374: new 150    java/lang/StringBuilder
    //   377: dup
    //   378: ldc_w 487
    //   381: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   384: iload 12
    //   386: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   389: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   392: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   395: new 386    android/graphics/BitmapFactory$Options
    //   398: dup
    //   399: invokespecial 387    android/graphics/BitmapFactory$Options:<init>    ()V
    //   402: astore 21
    //   404: aload 21
    //   406: iconst_0
    //   407: putfield 391    android/graphics/BitmapFactory$Options:inDither    Z
    //   410: aload 21
    //   412: aload_1
    //   413: putfield 394    android/graphics/BitmapFactory$Options:inPreferredConfig    Landroid/graphics/Bitmap$Config;
    //   416: aload_0
    //   417: aload 21
    //   419: invokestatic 435    android/graphics/BitmapFactory:decodeFile    (Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
    //   422: astore 22
    //   424: aload 22
    //   426: areturn
    //
    // Exception table:
    //   from    to    target    type
    //   50    55    326    java/io/IOException
    //   9    50    336    java/io/FileNotFoundException
    //   50    55    336    java/io/FileNotFoundException
    //   55    101    336    java/io/FileNotFoundException
    //   120    170    336    java/io/FileNotFoundException
    //   176    318    336    java/io/FileNotFoundException
    //   318    323    336    java/io/FileNotFoundException
    //   328    333    336    java/io/FileNotFoundException
    //   343    355    336    java/io/FileNotFoundException
    //   366    371    336    java/io/FileNotFoundException
    //   374    424    336    java/io/FileNotFoundException
    //   318    323    364    java/io/IOException
  }

  public static Bitmap Resample(Bitmap paramBitmap, float paramFloat)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int k = (int)(paramFloat * i);
      int m = (int)(paramFloat * j);
      byte[] arrayOfByte1 = bitmap2ByteARGB(paramBitmap);
      byte[] arrayOfByte2 = new byte[4 * (k * m)];
      jni.Resample(arrayOfByte2, k, m, 0, arrayOfByte1, i, j);
      Bitmap localBitmap = bytesARGB2Bimap(arrayOfByte2, k, m);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static byte[] SetBackWeakRadius(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  {
    int i = 1 + paramInt2 * 2;
    try
    {
      if (paramArrayOfByte.length < i * i)
      {
        MTDebug.PrintError("[Error][SetBackWeakRadius] alphaRect.length=" + paramArrayOfByte.length + "nOutsideRound=" + paramInt2);
        return null;
      }
      jni.SetBackWeakRadius(paramArrayOfByte, paramInt1, paramInt2);
      return paramArrayOfByte;
    }
    catch (Exception localException)
    {
      while (true)
        localException.printStackTrace();
    }
  }

  public static Bitmap Sharp(Bitmap paramBitmap, float paramFloat1, float paramFloat2, boolean paramBoolean)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      if (paramBoolean)
        paramBitmap.recycle();
      jni.Sharp(arrayOfInt, i, j, paramFloat1, paramFloat2);
      Bitmap localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap SharpPreview(Bitmap paramBitmap, float paramFloat1, float paramFloat2)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      jni.SharpPreview(arrayOfInt, i, j, paramFloat1, paramFloat2);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("SharpPreview time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static void SharpPreviewRelease()
  {
    try
    {
      jni.SharpPreviewRelease();
      return;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
  }

  public static Bitmap SkinWhite(Bitmap paramBitmap, int paramInt, boolean paramBoolean)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      if (paramBoolean)
        paramBitmap.recycle();
      jni.SkinWhite(arrayOfInt, i, j, paramInt);
      Bitmap localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap StyleBaoColor(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleBaoColor(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleBaoColor time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleBrightRed(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    Bitmap localBitmap1 = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt1 = bitmap2IntARGB(paramBitmap);
      localBitmap1 = null;
      if (paramBoolean)
        paramBitmap.recycle();
      Bitmap localBitmap2 = LoadAssertsPic("style/mtxx_lianghong_001.jpg", paramContext.getAssets());
      Bitmap localBitmap3 = resize(localBitmap2, i, j, false);
      localBitmap2.recycle();
      int[] arrayOfInt2 = bitmap2IntARGB(localBitmap3);
      localBitmap3.recycle();
      jni.StyleLomoBrightRed(arrayOfInt1, arrayOfInt2, i, j);
      ((int[])null);
      System.gc();
      localBitmap1 = intARGB2Bimap(arrayOfInt1, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleBrightRed time=" + l2);
      return localBitmap1;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap1;
  }

  public static Bitmap StyleCinnamon(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleCinnamon(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleCinnamon time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleClassic(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      MTDebug.Print("ta d0=" + arrayOfInt[0] + " d1=" + arrayOfInt[1]);
      jni.StyleClassic(arrayOfInt, i, j, paramFloat);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      ((int[])null);
      System.gc();
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleClassic time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleClassicStudio(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleClassicStudio(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleClassicStudio time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap StyleE(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 6
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 8
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 9
    //   17: ldc_w 557
    //   20: aload_1
    //   21: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   24: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   27: astore 10
    //   29: iload 8
    //   31: iload 9
    //   33: if_icmple +177 -> 210
    //   36: aload 10
    //   38: iconst_1
    //   39: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   42: iload 8
    //   44: iload 9
    //   46: iconst_1
    //   47: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   50: astore 11
    //   52: aload_0
    //   53: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   56: astore 12
    //   58: iload_2
    //   59: ifeq +7 -> 66
    //   62: aload_0
    //   63: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   66: aload 11
    //   68: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   71: astore 13
    //   73: aload 11
    //   75: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   78: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   81: aload 12
    //   83: aload 13
    //   85: iload 8
    //   87: iload 9
    //   89: invokevirtual 560    com/mt/mtxx/image/JNI:StyleEP1    ([I[III)V
    //   92: aconst_null
    //   93: checkcast 367    [I
    //   96: pop
    //   97: ldc_w 562
    //   100: aload_1
    //   101: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   104: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   107: astore 15
    //   109: iload 8
    //   111: iload 9
    //   113: if_icmple +112 -> 225
    //   116: aload 15
    //   118: iconst_1
    //   119: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   122: iload 8
    //   124: iload 9
    //   126: iconst_1
    //   127: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   130: astore 16
    //   132: aload 16
    //   134: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   137: astore 17
    //   139: aload 16
    //   141: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   144: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   147: aload 12
    //   149: aload 17
    //   151: iload 8
    //   153: iload 9
    //   155: invokevirtual 565    com/mt/mtxx/image/JNI:StyleEP2    ([I[III)V
    //   158: aconst_null
    //   159: checkcast 367    [I
    //   162: pop
    //   163: aload 12
    //   165: iload 8
    //   167: iload 9
    //   169: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   172: astore 19
    //   174: aload 19
    //   176: astore 5
    //   178: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   181: lload 6
    //   183: lsub
    //   184: lstore 20
    //   186: new 150    java/lang/StringBuilder
    //   189: dup
    //   190: ldc_w 567
    //   193: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   196: lload 20
    //   198: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   201: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   204: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   207: aload 5
    //   209: areturn
    //   210: aload 10
    //   212: iload 8
    //   214: iload 9
    //   216: iconst_1
    //   217: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   220: astore 11
    //   222: goto -170 -> 52
    //   225: aload 15
    //   227: iload 8
    //   229: iload 9
    //   231: iconst_1
    //   232: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   235: astore 22
    //   237: aload 22
    //   239: astore 16
    //   241: goto -109 -> 132
    //   244: astore_3
    //   245: aload_3
    //   246: astore 4
    //   248: aconst_null
    //   249: astore 5
    //   251: aload 4
    //   253: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   256: aload 5
    //   258: areturn
    //   259: astore 4
    //   261: goto -10 -> 251
    //
    // Exception table:
    //   from    to    target    type
    //   0    29    244    java/lang/Exception
    //   36    52    244    java/lang/Exception
    //   52    58    244    java/lang/Exception
    //   62    66    244    java/lang/Exception
    //   66    109    244    java/lang/Exception
    //   116    132    244    java/lang/Exception
    //   132    174    244    java/lang/Exception
    //   210    222    244    java/lang/Exception
    //   225    237    244    java/lang/Exception
    //   178    207    259    java/lang/Exception
  }

  public static Bitmap StyleElegant(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleElegant(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleElegant time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleElegantNew(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleElegantNew(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleElegantNew time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap StyleF(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 6
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 8
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 9
    //   17: ldc_w 580
    //   20: aload_1
    //   21: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   24: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   27: astore 10
    //   29: new 150    java/lang/StringBuilder
    //   32: dup
    //   33: ldc_w 582
    //   36: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   39: aload_0
    //   40: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   43: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   46: ldc_w 584
    //   49: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   52: aload_0
    //   53: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   56: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   59: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   62: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   65: iload 8
    //   67: iload 9
    //   69: if_icmple +253 -> 322
    //   72: aload 10
    //   74: iconst_1
    //   75: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   78: iload 8
    //   80: iload 9
    //   82: iconst_1
    //   83: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   86: astore 11
    //   88: new 150    java/lang/StringBuilder
    //   91: dup
    //   92: ldc_w 586
    //   95: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   98: aload 11
    //   100: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   103: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   106: ldc_w 299
    //   109: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   112: aload 11
    //   114: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   117: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   120: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   123: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   126: aload_0
    //   127: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   130: astore 12
    //   132: iload_2
    //   133: ifeq +7 -> 140
    //   136: aload_0
    //   137: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   140: aload 11
    //   142: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   145: astore 13
    //   147: aload 11
    //   149: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   152: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   155: aload 12
    //   157: aload 13
    //   159: iload 8
    //   161: iload 9
    //   163: invokevirtual 589    com/mt/mtxx/image/JNI:StyleFP1    ([I[III)V
    //   166: aconst_null
    //   167: checkcast 367    [I
    //   170: pop
    //   171: ldc_w 562
    //   174: aload_1
    //   175: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   178: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   181: astore 15
    //   183: iload 8
    //   185: iload 9
    //   187: if_icmple +150 -> 337
    //   190: aload 15
    //   192: iconst_1
    //   193: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   196: iload 8
    //   198: iload 9
    //   200: iconst_1
    //   201: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   204: astore 16
    //   206: new 150    java/lang/StringBuilder
    //   209: dup
    //   210: ldc_w 591
    //   213: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   216: aload 16
    //   218: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   221: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   224: ldc_w 299
    //   227: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   230: aload 16
    //   232: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   235: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   238: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   241: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   244: aload 16
    //   246: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   249: astore 17
    //   251: aload 16
    //   253: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   256: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   259: aload 12
    //   261: aload 17
    //   263: iload 8
    //   265: iload 9
    //   267: invokevirtual 594    com/mt/mtxx/image/JNI:StyleFP2    ([I[III)V
    //   270: aconst_null
    //   271: checkcast 367    [I
    //   274: pop
    //   275: aload 12
    //   277: iload 8
    //   279: iload 9
    //   281: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   284: astore 19
    //   286: aload 19
    //   288: astore 5
    //   290: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   293: lload 6
    //   295: lsub
    //   296: lstore 20
    //   298: new 150    java/lang/StringBuilder
    //   301: dup
    //   302: ldc_w 596
    //   305: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   308: lload 20
    //   310: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   313: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   316: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   319: aload 5
    //   321: areturn
    //   322: aload 10
    //   324: iload 8
    //   326: iload 9
    //   328: iconst_1
    //   329: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   332: astore 11
    //   334: goto -246 -> 88
    //   337: aload 15
    //   339: iload 8
    //   341: iload 9
    //   343: iconst_1
    //   344: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   347: astore 22
    //   349: aload 22
    //   351: astore 16
    //   353: goto -147 -> 206
    //   356: astore_3
    //   357: aload_3
    //   358: astore 4
    //   360: aconst_null
    //   361: astore 5
    //   363: aload 4
    //   365: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   368: aload 5
    //   370: areturn
    //   371: astore 4
    //   373: goto -10 -> 363
    //
    // Exception table:
    //   from    to    target    type
    //   0    65    356    java/lang/Exception
    //   72    88    356    java/lang/Exception
    //   88    132    356    java/lang/Exception
    //   136    140    356    java/lang/Exception
    //   140    183    356    java/lang/Exception
    //   190    206    356    java/lang/Exception
    //   206    286    356    java/lang/Exception
    //   322    334    356    java/lang/Exception
    //   337    349    356    java/lang/Exception
    //   290    319    371    java/lang/Exception
  }

  public static Bitmap StyleFilm(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleFilm(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleFilm time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap StyleG(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: new 150    java/lang/StringBuilder
    //   3: dup
    //   4: ldc_w 604
    //   7: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   10: aload_0
    //   11: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   14: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   17: ldc_w 299
    //   20: invokevirtual 183    java/lang/StringBuilder:append    (Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   23: aload_0
    //   24: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   27: invokevirtual 178    java/lang/StringBuilder:append    (I)Ljava/lang/StringBuilder;
    //   30: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   33: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   36: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   39: lstore 6
    //   41: aload_0
    //   42: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   45: istore 8
    //   47: aload_0
    //   48: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   51: istore 9
    //   53: ldc_w 606
    //   56: aload_1
    //   57: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   60: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   63: astore 10
    //   65: iload 8
    //   67: iload 9
    //   69: if_icmple +205 -> 274
    //   72: aload 10
    //   74: iconst_1
    //   75: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   78: iload 8
    //   80: iload 9
    //   82: iconst_1
    //   83: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   86: astore 11
    //   88: aload 11
    //   90: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   93: astore 12
    //   95: aload 11
    //   97: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   100: aload_0
    //   101: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   104: astore 13
    //   106: iload_2
    //   107: ifeq +7 -> 114
    //   110: aload_0
    //   111: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   114: ldc_w 608
    //   117: aload_1
    //   118: invokestatic 614    com/mt/mtxx/mtxx/MyPro:getBytesFromAssets    (Ljava/lang/String;Landroid/content/Context;)[B
    //   121: astore 14
    //   123: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   126: aload 13
    //   128: aload 12
    //   130: iload 8
    //   132: iload 9
    //   134: aload 14
    //   136: aload 14
    //   138: arraylength
    //   139: invokevirtual 618    com/mt/mtxx/image/JNI:StyleGP1    ([I[III[BI)V
    //   142: aconst_null
    //   143: checkcast 367    [I
    //   146: pop
    //   147: ldc_w 620
    //   150: aload_1
    //   151: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   154: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   157: astore 16
    //   159: iload 8
    //   161: iload 9
    //   163: if_icmple +126 -> 289
    //   166: aload 16
    //   168: iconst_1
    //   169: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   172: iload 8
    //   174: iload 9
    //   176: iconst_1
    //   177: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   180: astore 17
    //   182: aload 17
    //   184: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   187: astore 18
    //   189: aload 17
    //   191: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   194: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   197: aload 13
    //   199: aload 18
    //   201: iload 8
    //   203: iload 9
    //   205: aload 14
    //   207: aload 14
    //   209: arraylength
    //   210: invokevirtual 623    com/mt/mtxx/image/JNI:StyleGP2    ([I[III[BI)V
    //   213: aconst_null
    //   214: checkcast 367    [I
    //   217: pop
    //   218: aload 13
    //   220: iload 8
    //   222: iload 9
    //   224: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   227: astore 20
    //   229: aload 20
    //   231: astore 5
    //   233: aconst_null
    //   234: checkcast 367    [I
    //   237: pop
    //   238: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   241: lload 6
    //   243: lsub
    //   244: lstore 22
    //   246: new 150    java/lang/StringBuilder
    //   249: dup
    //   250: ldc_w 625
    //   253: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   256: astore 24
    //   258: aload 24
    //   260: lload 22
    //   262: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   265: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   268: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   271: aload 5
    //   273: areturn
    //   274: aload 10
    //   276: iload 8
    //   278: iload 9
    //   280: iconst_1
    //   281: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   284: astore 11
    //   286: goto -198 -> 88
    //   289: aload 16
    //   291: iload 8
    //   293: iload 9
    //   295: iconst_1
    //   296: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   299: astore 25
    //   301: aload 25
    //   303: astore 17
    //   305: goto -123 -> 182
    //   308: astore_3
    //   309: aload_3
    //   310: astore 4
    //   312: aconst_null
    //   313: astore 5
    //   315: aload 4
    //   317: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   320: aload 5
    //   322: areturn
    //   323: astore 4
    //   325: goto -10 -> 315
    //
    // Exception table:
    //   from    to    target    type
    //   0    65    308    java/lang/Exception
    //   72    88    308    java/lang/Exception
    //   88    106    308    java/lang/Exception
    //   110    114    308    java/lang/Exception
    //   114    159    308    java/lang/Exception
    //   166    182    308    java/lang/Exception
    //   182    229    308    java/lang/Exception
    //   274    286    308    java/lang/Exception
    //   289    301    308    java/lang/Exception
    //   233    271    323    java/lang/Exception
  }

  public static Bitmap StyleImpression(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleImpression(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleImpression time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleJapanese(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleJapanese(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleJapanese time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap StyleLomo(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 6
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 8
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 9
    //   17: aload_0
    //   18: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   21: astore 10
    //   23: iload_2
    //   24: ifeq +7 -> 31
    //   27: aload_0
    //   28: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   31: ldc_w 638
    //   34: aload_1
    //   35: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   38: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   41: astore 11
    //   43: aload 11
    //   45: iload 8
    //   47: iload 9
    //   49: iconst_0
    //   50: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   53: astore 12
    //   55: aload 11
    //   57: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   60: aload 12
    //   62: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   65: astore 13
    //   67: aload 12
    //   69: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   72: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   75: aload 10
    //   77: iload 8
    //   79: iload 9
    //   81: aload 13
    //   83: invokevirtual 642    com/mt/mtxx/image/JNI:LOMO1    ([III[I)V
    //   86: aconst_null
    //   87: checkcast 367    [I
    //   90: pop
    //   91: ldc_w 644
    //   94: aload_1
    //   95: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   98: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   101: astore 15
    //   103: aload 15
    //   105: iload 8
    //   107: iload 9
    //   109: iconst_0
    //   110: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   113: astore 16
    //   115: aload 15
    //   117: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   120: aload 16
    //   122: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   125: astore 17
    //   127: aload 16
    //   129: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   132: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   135: aload 10
    //   137: iload 8
    //   139: iload 9
    //   141: aload 17
    //   143: invokevirtual 647    com/mt/mtxx/image/JNI:LOMO2    ([III[I)V
    //   146: aconst_null
    //   147: checkcast 367    [I
    //   150: pop
    //   151: aload 10
    //   153: iload 8
    //   155: iload 9
    //   157: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   160: astore 19
    //   162: aload 19
    //   164: astore 5
    //   166: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   169: lload 6
    //   171: lsub
    //   172: lstore 20
    //   174: new 150    java/lang/StringBuilder
    //   177: dup
    //   178: ldc_w 649
    //   181: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   184: lload 20
    //   186: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   189: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   192: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   195: aload 5
    //   197: areturn
    //   198: astore_3
    //   199: aload_3
    //   200: astore 4
    //   202: aconst_null
    //   203: astore 5
    //   205: aload 4
    //   207: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   210: aload 5
    //   212: areturn
    //   213: astore 4
    //   215: goto -10 -> 205
    //
    // Exception table:
    //   from    to    target    type
    //   0    23    198    java/lang/Exception
    //   27    31    198    java/lang/Exception
    //   31    162    198    java/lang/Exception
    //   166    195    213    java/lang/Exception
  }

  // ERROR //
  public static Bitmap StyleLomoA(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 6
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 8
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 9
    //   17: aload_0
    //   18: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   21: astore 10
    //   23: iload_2
    //   24: ifeq +7 -> 31
    //   27: aload_0
    //   28: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   31: ldc_w 652
    //   34: aload_1
    //   35: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   38: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   41: astore 11
    //   43: iload 8
    //   45: iload 9
    //   47: if_icmple +186 -> 233
    //   50: aload 11
    //   52: iconst_1
    //   53: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   56: iload 8
    //   58: iload 9
    //   60: iconst_1
    //   61: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   64: astore 12
    //   66: aload 12
    //   68: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   71: astore 13
    //   73: aload 12
    //   75: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   78: ldc_w 654
    //   81: aload_1
    //   82: invokestatic 614    com/mt/mtxx/mtxx/MyPro:getBytesFromAssets    (Ljava/lang/String;Landroid/content/Context;)[B
    //   85: astore 14
    //   87: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   90: aload 10
    //   92: aload 13
    //   94: iload 8
    //   96: iload 9
    //   98: aload 14
    //   100: aload 14
    //   102: arraylength
    //   103: invokevirtual 657    com/mt/mtxx/image/JNI:StyleLomoAP1    ([I[III[BI)V
    //   106: aconst_null
    //   107: checkcast 367    [I
    //   110: pop
    //   111: ldc_w 562
    //   114: aload_1
    //   115: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   118: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   121: astore 16
    //   123: iload 8
    //   125: iload 9
    //   127: if_icmple +121 -> 248
    //   130: aload 16
    //   132: iconst_1
    //   133: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   136: iload 8
    //   138: iload 9
    //   140: iconst_1
    //   141: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   144: astore 17
    //   146: aload 17
    //   148: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   151: astore 18
    //   153: aload 17
    //   155: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   158: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   161: aload 10
    //   163: aload 18
    //   165: iload 8
    //   167: iload 9
    //   169: aload 14
    //   171: aload 14
    //   173: arraylength
    //   174: invokevirtual 660    com/mt/mtxx/image/JNI:StyleLomoAP2    ([I[III[BI)V
    //   177: aconst_null
    //   178: checkcast 367    [I
    //   181: pop
    //   182: aload 10
    //   184: iload 8
    //   186: iload 9
    //   188: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   191: astore 20
    //   193: aload 20
    //   195: astore 5
    //   197: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   200: lload 6
    //   202: lsub
    //   203: lstore 21
    //   205: new 150    java/lang/StringBuilder
    //   208: dup
    //   209: ldc_w 662
    //   212: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   215: astore 23
    //   217: aload 23
    //   219: lload 21
    //   221: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   224: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   227: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   230: aload 5
    //   232: areturn
    //   233: aload 11
    //   235: iload 8
    //   237: iload 9
    //   239: iconst_1
    //   240: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   243: astore 12
    //   245: goto -179 -> 66
    //   248: aload 16
    //   250: iload 8
    //   252: iload 9
    //   254: iconst_1
    //   255: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   258: astore 24
    //   260: aload 24
    //   262: astore 17
    //   264: goto -118 -> 146
    //   267: astore_3
    //   268: aload_3
    //   269: astore 4
    //   271: aconst_null
    //   272: astore 5
    //   274: aload 4
    //   276: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   279: aload 5
    //   281: areturn
    //   282: astore 4
    //   284: goto -10 -> 274
    //
    // Exception table:
    //   from    to    target    type
    //   0    23    267    java/lang/Exception
    //   27    31    267    java/lang/Exception
    //   31    43    267    java/lang/Exception
    //   50    66    267    java/lang/Exception
    //   66    123    267    java/lang/Exception
    //   130    146    267    java/lang/Exception
    //   146    193    267    java/lang/Exception
    //   233    245    267    java/lang/Exception
    //   248    260    267    java/lang/Exception
    //   197    230    282    java/lang/Exception
  }

  public static Bitmap StyleLomoB(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      MTDebug.Print("StyleLomoB 0");
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      MTDebug.Print("StyleLomoB 1");
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      MTDebug.Print("StyleLomoB 2");
      jni.StyleLomoB(arrayOfInt, i, j);
      MTDebug.Print("StyleLomoB 3");
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleLomoB time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      MTDebug.Print("StyleLomoB Error!" + localException.toString());
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleLomoC(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleLomoC(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleLomoC time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap StyleLomoChristmas(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    Bitmap localBitmap1 = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt1 = bitmap2IntARGB(paramBitmap);
      localBitmap1 = null;
      if (paramBoolean)
        paramBitmap.recycle();
      Bitmap localBitmap2 = LoadAssertsPic("style/mtxx_festival_1b.jpg", paramContext.getAssets());
      Bitmap localBitmap3 = resize(localBitmap2, i, j, false);
      localBitmap2.recycle();
      int[] arrayOfInt2 = bitmap2IntARGB(localBitmap3);
      localBitmap3.recycle();
      jni.StyleLomoChristmas(arrayOfInt1, arrayOfInt2, i, j);
      ((int[])null);
      System.gc();
      localBitmap1 = intARGB2Bimap(arrayOfInt1, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleLomoChristmas time=" + l2);
      return localBitmap1;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap1;
  }

  public static Bitmap StyleLomoHDR(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleLomoHDR(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleLomoHDR time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap StyleMilk(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   3: lstore 6
    //   5: aload_0
    //   6: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   9: istore 8
    //   11: aload_0
    //   12: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   15: istore 9
    //   17: aload_0
    //   18: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   21: astore 10
    //   23: iload_2
    //   24: ifeq +9 -> 33
    //   27: aload_0
    //   28: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   31: aconst_null
    //   32: astore_0
    //   33: ldc_w 697
    //   36: aload_1
    //   37: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   40: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   43: astore 11
    //   45: aload 11
    //   47: iload 8
    //   49: iload 9
    //   51: iconst_0
    //   52: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   55: astore 12
    //   57: aload 11
    //   59: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   62: aload 12
    //   64: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   67: astore 13
    //   69: aload 12
    //   71: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   74: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   77: aload 10
    //   79: aload 13
    //   81: iload 8
    //   83: iload 9
    //   85: invokevirtual 700    com/mt/mtxx/image/JNI:StyleMilk1    ([I[III)V
    //   88: aconst_null
    //   89: checkcast 367    [I
    //   92: pop
    //   93: invokestatic 354    java/lang/System:gc    ()V
    //   96: ldc_w 702
    //   99: aload_1
    //   100: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   103: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   106: astore 15
    //   108: aload 15
    //   110: iload 8
    //   112: iload 9
    //   114: iconst_0
    //   115: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   118: astore 16
    //   120: aload 15
    //   122: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   125: aload 16
    //   127: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   130: astore 17
    //   132: aload 16
    //   134: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   137: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   140: aload 10
    //   142: aload 17
    //   144: iload 8
    //   146: iload 9
    //   148: invokevirtual 705    com/mt/mtxx/image/JNI:StyleMilk2    ([I[III)V
    //   151: aconst_null
    //   152: checkcast 367    [I
    //   155: pop
    //   156: aload_0
    //   157: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   160: astore 19
    //   162: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   165: aload 10
    //   167: aload 19
    //   169: iload 8
    //   171: iload 9
    //   173: invokevirtual 708    com/mt/mtxx/image/JNI:StyleMilk3    ([I[III)V
    //   176: aconst_null
    //   177: checkcast 367    [I
    //   180: pop
    //   181: ldc_w 710
    //   184: aload_1
    //   185: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   188: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   191: astore 21
    //   193: aload 21
    //   195: iload 8
    //   197: iload 9
    //   199: iconst_0
    //   200: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   203: astore 22
    //   205: aload 21
    //   207: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   210: aload 22
    //   212: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   215: astore 23
    //   217: aload 22
    //   219: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   222: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   225: aload 10
    //   227: aload 23
    //   229: iload 8
    //   231: iload 9
    //   233: invokevirtual 713    com/mt/mtxx/image/JNI:StyleMilk4    ([I[III)V
    //   236: aconst_null
    //   237: checkcast 367    [I
    //   240: pop
    //   241: aload 10
    //   243: iload 8
    //   245: iload 9
    //   247: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   250: astore 25
    //   252: aload 25
    //   254: astore 5
    //   256: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   259: lload 6
    //   261: lsub
    //   262: lstore 26
    //   264: new 150    java/lang/StringBuilder
    //   267: dup
    //   268: ldc_w 356
    //   271: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   274: lload 26
    //   276: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   279: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   282: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   285: aload 5
    //   287: areturn
    //   288: astore_3
    //   289: aload_3
    //   290: astore 4
    //   292: aconst_null
    //   293: astore 5
    //   295: aload 4
    //   297: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   300: aload 5
    //   302: areturn
    //   303: astore 4
    //   305: goto -10 -> 295
    //
    // Exception table:
    //   from    to    target    type
    //   0    23    288    java/lang/Exception
    //   27    31    288    java/lang/Exception
    //   33    252    288    java/lang/Exception
    //   256    285    303    java/lang/Exception
  }

  public static Bitmap StyleOldPhoto(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    Bitmap localBitmap1 = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      Bitmap localBitmap2 = LoadAssertsPic("style/mtxx_lzp_b.jpg", paramContext.getAssets());
      Bitmap localBitmap3 = resize(localBitmap2, i, j, false);
      localBitmap2.recycle();
      int[] arrayOfInt1 = bitmap2IntARGB(paramBitmap);
      localBitmap1 = null;
      if (paramBoolean)
        paramBitmap.recycle();
      int[] arrayOfInt2 = bitmap2IntARGB(localBitmap3);
      localBitmap3.recycle();
      jni.StyleOldPhoto(arrayOfInt1, arrayOfInt2, i, j);
      localBitmap1 = intARGB2Bimap(arrayOfInt1, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleOldPhoto time=" + l2);
      return localBitmap1;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap1;
  }

  // ERROR //
  public static Bitmap StyleOldPhoto2(Bitmap paramBitmap, Context paramContext, boolean paramBoolean)
  {
    // Byte code:
    //   0: ldc_w 722
    //   3: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   6: pop2
    //   7: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   10: lstore 8
    //   12: aload_0
    //   13: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   16: istore 10
    //   18: aload_0
    //   19: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   22: istore 11
    //   24: ldc_w 724
    //   27: aload_1
    //   28: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   31: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   34: astore 12
    //   36: iload 10
    //   38: iload 11
    //   40: if_icmple +284 -> 324
    //   43: aload 12
    //   45: iconst_1
    //   46: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   49: astore 13
    //   51: ldc_w 726
    //   54: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   57: pop2
    //   58: aload 13
    //   60: iload 10
    //   62: iload 11
    //   64: iconst_1
    //   65: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   68: astore 16
    //   70: ldc_w 728
    //   73: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   76: pop2
    //   77: invokestatic 354    java/lang/System:gc    ()V
    //   80: ldc_w 730
    //   83: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   86: pop2
    //   87: aload 16
    //   89: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   92: astore 21
    //   94: aload 16
    //   96: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   99: aload_0
    //   100: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   103: astore 22
    //   105: iload_2
    //   106: ifeq +7 -> 113
    //   109: aload_0
    //   110: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   113: invokestatic 354    java/lang/System:gc    ()V
    //   116: ldc_w 728
    //   119: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   122: pop2
    //   123: ldc_w 732
    //   126: aload_1
    //   127: invokestatic 614    com/mt/mtxx/mtxx/MyPro:getBytesFromAssets    (Ljava/lang/String;Landroid/content/Context;)[B
    //   130: astore 25
    //   132: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   135: aload 22
    //   137: aload 21
    //   139: iload 10
    //   141: iload 11
    //   143: aload 25
    //   145: aload 25
    //   147: arraylength
    //   148: invokevirtual 735    com/mt/mtxx/image/JNI:StyleOldPhotoP1    ([I[III[BI)V
    //   151: ldc_w 737
    //   154: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   157: pop2
    //   158: aconst_null
    //   159: checkcast 367    [I
    //   162: pop
    //   163: invokestatic 354    java/lang/System:gc    ()V
    //   166: ldc_w 739
    //   169: aload_1
    //   170: invokevirtual 331    android/content/Context:getAssets    ()Landroid/content/res/AssetManager;
    //   173: invokestatic 335    com/mt/mtxx/image/ImageProcess:LoadAssertsPic    (Ljava/lang/String;Landroid/content/res/AssetManager;)Landroid/graphics/Bitmap;
    //   176: astore 29
    //   178: iload 10
    //   180: iload 11
    //   182: if_icmple +179 -> 361
    //   185: aload 29
    //   187: iconst_1
    //   188: invokestatic 338    com/mt/mtxx/image/ImageProcess:rotate90    (Landroid/graphics/Bitmap;Z)Landroid/graphics/Bitmap;
    //   191: iload 10
    //   193: iload 11
    //   195: iconst_1
    //   196: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   199: astore 30
    //   201: ldc_w 741
    //   204: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   207: pop2
    //   208: aload 30
    //   210: invokestatic 262    com/mt/mtxx/image/ImageProcess:bitmap2IntARGB    (Landroid/graphics/Bitmap;)[I
    //   213: astore 33
    //   215: aload 30
    //   217: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   220: getstatic 117    com/mt/mtxx/image/ImageProcess:jni    Lcom/mt/mtxx/image/JNI;
    //   223: aload 22
    //   225: aload 33
    //   227: iload 10
    //   229: iload 11
    //   231: aload 25
    //   233: aload 25
    //   235: arraylength
    //   236: invokevirtual 744    com/mt/mtxx/image/JNI:StyleOldPhotoP2    ([I[III[BI)V
    //   239: ldc_w 746
    //   242: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   245: pop2
    //   246: aconst_null
    //   247: checkcast 367    [I
    //   250: pop
    //   251: invokestatic 354    java/lang/System:gc    ()V
    //   254: ldc_w 748
    //   257: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   260: pop2
    //   261: aconst_null
    //   262: checkcast 750    [B
    //   265: pop
    //   266: ldc_w 752
    //   269: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   272: pop2
    //   273: aload 22
    //   275: iload 10
    //   277: iload 11
    //   279: invokestatic 206    com/mt/mtxx/image/ImageProcess:intARGB2Bimap    ([III)Landroid/graphics/Bitmap;
    //   282: astore 42
    //   284: aload 42
    //   286: astore 5
    //   288: invokestatic 128    java/lang/System:currentTimeMillis    ()J
    //   291: lload 8
    //   293: lsub
    //   294: lstore 43
    //   296: new 150    java/lang/StringBuilder
    //   299: dup
    //   300: ldc_w 754
    //   303: invokespecial 155    java/lang/StringBuilder:<init>    (Ljava/lang/String;)V
    //   306: astore 45
    //   308: aload 45
    //   310: lload 43
    //   312: invokevirtual 159    java/lang/StringBuilder:append    (J)Ljava/lang/StringBuilder;
    //   315: invokevirtual 163    java/lang/StringBuilder:toString    ()Ljava/lang/String;
    //   318: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   321: aload 5
    //   323: areturn
    //   324: aload 12
    //   326: iload 10
    //   328: iload 11
    //   330: iconst_1
    //   331: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   334: astore 16
    //   336: ldc_w 756
    //   339: invokestatic 456    com/mt/mtxx/mtxx/MTDebug:memeryUsed    (Ljava/lang/String;)D
    //   342: pop2
    //   343: goto -273 -> 70
    //   346: astore_3
    //   347: aload_3
    //   348: astore 4
    //   350: aconst_null
    //   351: astore 5
    //   353: aload 4
    //   355: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   358: aload 5
    //   360: areturn
    //   361: aload 29
    //   363: iload 10
    //   365: iload 11
    //   367: iconst_1
    //   368: invokestatic 341    com/mt/mtxx/image/ImageProcess:resize    (Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
    //   371: astore 46
    //   373: aload 46
    //   375: astore 30
    //   377: goto -176 -> 201
    //   380: astore 4
    //   382: goto -29 -> 353
    //
    // Exception table:
    //   from    to    target    type
    //   0    36    346    java/lang/Exception
    //   43    70    346    java/lang/Exception
    //   70    105    346    java/lang/Exception
    //   109    113    346    java/lang/Exception
    //   113    178    346    java/lang/Exception
    //   185    201    346    java/lang/Exception
    //   201    284    346    java/lang/Exception
    //   324    343    346    java/lang/Exception
    //   361    373    346    java/lang/Exception
    //   288    321    380    java/lang/Exception
  }

  public static Bitmap StyleRetro(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      long l1 = System.currentTimeMillis();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      localBitmap = null;
      if (paramBoolean)
        paramBitmap.recycle();
      jni.StyleRetro(arrayOfInt, i, j);
      localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      long l2 = System.currentTimeMillis() - l1;
      MTDebug.Print("StyleRetro time=" + l2);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap White(Bitmap paramBitmap, int paramInt1, int paramInt2, int paramInt3, double paramDouble)
  {
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int[] arrayOfInt = bitmap2IntARGB(paramBitmap);
      jni.SSkinbeautify(arrayOfInt, i, j, paramInt1, paramInt2, paramInt3, paramDouble);
      Bitmap localBitmap = intARGB2Bimap(arrayOfInt, i, j);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static int add(int paramInt, byte paramByte)
  {
    return jni.add(paramInt, paramByte);
  }

  public static byte[] bitmap2Byte(Bitmap paramBitmap)
  {
    byte[] arrayOfByte = (byte[])null;
    while (true)
    {
      int i;
      int n;
      try
      {
        i = paramBitmap.getWidth();
        int j = paramBitmap.getHeight();
        int[] arrayOfInt = new int[i * j];
        arrayOfByte = new byte[3 * (i * j)];
        paramBitmap.getPixels(arrayOfInt, 0, i, 0, 0, i, j);
        int k = 0;
        int m = 0;
        n = 0;
        if (n >= j)
        {
          ((int[])null);
          return arrayOfByte;
          arrayOfByte[m] = (byte)(0xFF & arrayOfInt[k]);
          arrayOfByte[(m + 1)] = (byte)(0xFF & arrayOfInt[k] >> 8);
          arrayOfByte[(m + 2)] = (byte)(0xFF & arrayOfInt[k] >> 16);
          m += 3;
          k++;
          i1++;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return arrayOfByte;
      }
      int i1 = 0;
      if (i1 < i)
        continue;
      n++;
    }
  }

  public static byte[] bitmap2ByteARGB(Bitmap paramBitmap)
  {
    byte[] arrayOfByte = (byte[])null;
    while (true)
    {
      int i;
      int n;
      try
      {
        i = paramBitmap.getWidth();
        int j = paramBitmap.getHeight();
        arrayOfByte = new byte[4 * (i * j)];
        int[] arrayOfInt = new int[i * j];
        paramBitmap.getPixels(arrayOfInt, 0, i, 0, 0, i, j);
        int k = 0;
        int m = 0;
        n = 0;
        if (n >= j)
        {
          ((int[])null);
          return arrayOfByte;
          int i2 = arrayOfInt[k];
          arrayOfByte[m] = (byte)(i2 & 0xFF);
          arrayOfByte[(m + 1)] = (byte)(0xFF & i2 >> 8);
          arrayOfByte[(m + 2)] = (byte)(0xFF & i2 >> 16);
          arrayOfByte[(m + 3)] = (byte)(0xFF & i2 >> 24);
          m += 4;
          k++;
          i1++;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return arrayOfByte;
      }
      int i1 = 0;
      if (i1 < i)
        continue;
      n++;
    }
  }

  public static int[] bitmap2IntARGB(Bitmap paramBitmap)
  {
    int[] arrayOfInt = (int[])null;
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      arrayOfInt = new int[i * j];
      paramBitmap.getPixels(arrayOfInt, 0, i, 0, 0, i, j);
      return arrayOfInt;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return arrayOfInt;
  }

  public static Bitmap bright(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      if (paramFloat < 0.0F)
        paramFloat = 1.0F;
      Paint localPaint = new Paint();
      ColorMatrix localColorMatrix = new ColorMatrix();
      localColorMatrix.set(new float[] { paramFloat, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, paramFloat, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, paramFloat, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 1.0F, 0.0F });
      localPaint.setColorFilter(new ColorMatrixColorFilter(localColorMatrix));
      localPaint.setAntiAlias(true);
      localPaint.setDither(false);
      localPaint.setFilterBitmap(true);
      localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
      if (paramBoolean)
        paramBitmap.recycle();
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap bytes2Bimap(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  {
    while (true)
    {
      int i;
      try
      {
        if (paramArrayOfByte.length == 3 * (paramInt1 * paramInt2))
          continue;
        MTDebug.PrintError("bytes2Bimap data.length=" + paramArrayOfByte.length + " w*h*4=" + 3 * (paramInt1 * paramInt2));
        return null;
        if (paramArrayOfByte.length <= 0)
          continue;
        Bitmap localBitmap = Bitmap.createBitmap(paramInt1, paramInt2, MyData.mConfig);
        if (localBitmap == null)
          return null;
        int[] arrayOfInt = new int[paramInt1 * paramInt2];
        i = 0;
        int j = 0;
        int k = 0;
        if (i >= paramInt2)
        {
          localBitmap.setPixels(arrayOfInt, 0, paramInt1, 0, 0, paramInt1, paramInt2);
          return localBitmap;
          arrayOfInt[k] = ((0xFF & paramArrayOfByte[j]) + ((0xFF & paramArrayOfByte[(j + 1)]) << 8) + ((0xFF & paramArrayOfByte[(j + 2)]) << 16));
          j += 3;
          k++;
          m++;
          break label172;
          return null;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return null;
      }
      int m = 0;
      label172: if (m < paramInt1)
        continue;
      i++;
    }
  }

  public static Bitmap bytesARGB2Bimap(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  {
    while (true)
    {
      int i;
      try
      {
        if (paramArrayOfByte.length <= 0)
          continue;
        if (paramArrayOfByte.length == 4 * (paramInt1 * paramInt2))
          continue;
        MTDebug.PrintError("bytesARGB2Bimap data.length=" + paramArrayOfByte.length + " w*h*4=" + 4 * (paramInt1 * paramInt2));
        return null;
        Bitmap localBitmap = Bitmap.createBitmap(paramInt1, paramInt2, MyData.mConfig);
        if (localBitmap == null)
          return null;
        int[] arrayOfInt = new int[paramInt1 * paramInt2];
        i = 0;
        int j = 0;
        int k = 0;
        if (i >= paramInt2)
        {
          localBitmap.setPixels(arrayOfInt, 0, paramInt1, 0, 0, paramInt1, paramInt2);
          ((int[])null);
          return localBitmap;
          arrayOfInt[j] = ((0xFF & paramArrayOfByte[k]) + ((0xFF & paramArrayOfByte[(k + 1)]) << 8) + ((0xFF & paramArrayOfByte[(k + 2)]) << 16) + ((0xFF & paramArrayOfByte[(k + 3)]) << 24));
          k += 4;
          j++;
          m++;
          break label191;
          return null;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return null;
      }
      int m = 0;
      label191: if (m < paramInt1)
        continue;
      i++;
    }
  }

  public static boolean changeARGB(byte[] paramArrayOfByte, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
  {
    int i = 0;
    try
    {
      while (i < paramArrayOfByte.length)
      {
        if (paramInt1 >= 0)
          paramArrayOfByte[(i + 3)] = (byte)paramInt1;
        if (paramInt2 >= 0)
          paramArrayOfByte[(i + 2)] = (byte)paramInt2;
        if (paramInt3 >= 0)
          paramArrayOfByte[(i + 1)] = (byte)paramInt3;
        if (paramInt4 >= 0)
          paramArrayOfByte[(i + 0)] = (byte)paramInt4;
        i += 4;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return true;
  }

  public static boolean changeIntARGB(int[] paramArrayOfInt, int paramInt1, int paramInt2, int paramInt3, int paramInt4)
  {
    int i = 0;
    try
    {
      while (i < paramArrayOfInt.length)
      {
        if ((paramInt1 >= 0) && (paramInt1 < 256))
          paramArrayOfInt[i] = ((0xFFFFFF & paramArrayOfInt[i]) + (paramInt1 << 24));
        if ((paramInt2 >= 0) && (paramInt2 < 256))
          paramArrayOfInt[i] = ((0xFF00FFFF & paramArrayOfInt[i]) + (paramInt2 << 16));
        if ((paramInt3 >= 0) && (paramInt3 < 256))
          paramArrayOfInt[i] = ((0xFFFF00FF & paramArrayOfInt[i]) + (paramInt3 << 8));
        if ((paramInt4 >= 0) && (paramInt4 < 256))
          paramArrayOfInt[i] = (paramInt4 + (0xFFFFFF00 & paramArrayOfInt[i]));
        i++;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return true;
  }

  public static Bitmap colorRGB(Bitmap paramBitmap, int paramInt, float paramFloat)
  {
    Bitmap localBitmap = null;
    while (true)
    {
      ColorMatrix localColorMatrix;
      try
      {
        localBitmap = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
        Canvas localCanvas = new Canvas(localBitmap);
        Paint localPaint = new Paint();
        localColorMatrix = new ColorMatrix();
        if (paramInt != 0)
          continue;
        localColorMatrix.setScale(paramFloat, 1.0F, 1.0F, 255.0F);
        localPaint.setColorFilter(new ColorMatrixColorFilter(localColorMatrix));
        localPaint.setAntiAlias(true);
        localPaint.setDither(false);
        localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
        return localBitmap;
        if (paramInt == 0)
        {
          localColorMatrix.setScale(1.0F, paramFloat, 1.0F, 255.0F);
          continue;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return localBitmap;
      }
      if (paramInt != 0)
        continue;
      localColorMatrix.setScale(1.0F, 1.0F, paramFloat, 255.0F);
    }
  }

  public static Bitmap combineBitmap(Bitmap paramBitmap1, int paramInt1, int paramInt2, int paramInt3, int paramInt4, Bitmap paramBitmap2, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap1.getWidth(), paramBitmap1.getHeight(), paramBitmap1.getConfig());
      if (paramBoolean)
      {
        paramBitmap1.recycle();
        paramBitmap1 = null;
      }
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      localPaint.setAntiAlias(true);
      localPaint.setDither(false);
      localCanvas.drawBitmap(paramBitmap1, 0.0F, 0.0F, localPaint);
      localCanvas.drawBitmap(paramBitmap2, new Rect(0, 0, paramBitmap2.getWidth(), paramBitmap2.getHeight()), new Rect(paramInt1, paramInt2, paramInt1 + paramInt3, paramInt2 + paramInt4), localPaint);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap combineBitmap(Bitmap paramBitmap1, int paramInt1, int paramInt2, Bitmap paramBitmap2)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap1.getWidth(), paramBitmap1.getHeight(), paramBitmap1.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      localPaint.setAntiAlias(true);
      localPaint.setDither(false);
      localCanvas.drawBitmap(paramBitmap1, paramInt1, paramInt2, localPaint);
      localCanvas.drawBitmap(paramBitmap2, paramInt1, paramInt2, localPaint);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static Bitmap contrast(Bitmap paramBitmap, int paramInt, boolean paramBoolean)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokevirtual 134    android/graphics/Bitmap:getWidth    ()I
    //   4: aload_0
    //   5: invokevirtual 137    android/graphics/Bitmap:getHeight    ()I
    //   8: aload_0
    //   9: invokevirtual 234    android/graphics/Bitmap:getConfig    ()Landroid/graphics/Bitmap$Config;
    //   12: invokestatic 413    android/graphics/Bitmap:createBitmap    (IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
    //   15: astore 6
    //   17: new 415    android/graphics/Canvas
    //   20: dup
    //   21: aload 6
    //   23: invokespecial 418    android/graphics/Canvas:<init>    (Landroid/graphics/Bitmap;)V
    //   26: astore 7
    //   28: new 420    android/graphics/Paint
    //   31: dup
    //   32: invokespecial 421    android/graphics/Paint:<init>    ()V
    //   35: astore 8
    //   37: new 779    android/graphics/ColorMatrix
    //   40: dup
    //   41: invokespecial 780    android/graphics/ColorMatrix:<init>    ()V
    //   44: astore 9
    //   46: iconst_2
    //   47: iload_1
    //   48: iconst_3
    //   49: imul
    //   50: iconst_5
    //   51: idiv
    //   52: bipush 30
    //   54: isub
    //   55: imul
    //   56: istore 11
    //   58: iload 11
    //   60: ifge +268 -> 328
    //   63: ldc_w 836
    //   66: ldc_w 836
    //   69: fconst_1
    //   70: iload 11
    //   72: i2f
    //   73: fmul
    //   74: ldc_w 837
    //   77: fdiv
    //   78: fmul
    //   79: fadd
    //   80: fstore 12
    //   82: fload 12
    //   84: ldc_w 836
    //   87: fdiv
    //   88: fstore 13
    //   90: bipush 25
    //   92: newarray float
    //   94: astore 14
    //   96: aload 14
    //   98: iconst_0
    //   99: fload 13
    //   101: fastore
    //   102: aload 14
    //   104: iconst_1
    //   105: fconst_0
    //   106: fastore
    //   107: aload 14
    //   109: iconst_2
    //   110: fconst_0
    //   111: fastore
    //   112: aload 14
    //   114: iconst_3
    //   115: fconst_0
    //   116: fastore
    //   117: aload 14
    //   119: iconst_4
    //   120: ldc 43
    //   122: ldc_w 836
    //   125: fload 12
    //   127: fsub
    //   128: fmul
    //   129: fastore
    //   130: aload 14
    //   132: iconst_5
    //   133: fconst_0
    //   134: fastore
    //   135: aload 14
    //   137: bipush 6
    //   139: fload 13
    //   141: fastore
    //   142: aload 14
    //   144: bipush 7
    //   146: fconst_0
    //   147: fastore
    //   148: aload 14
    //   150: bipush 8
    //   152: fconst_0
    //   153: fastore
    //   154: aload 14
    //   156: bipush 9
    //   158: ldc 43
    //   160: ldc_w 836
    //   163: fload 12
    //   165: fsub
    //   166: fmul
    //   167: fastore
    //   168: aload 14
    //   170: bipush 10
    //   172: fconst_0
    //   173: fastore
    //   174: aload 14
    //   176: bipush 11
    //   178: fconst_0
    //   179: fastore
    //   180: aload 14
    //   182: bipush 12
    //   184: fload 13
    //   186: fastore
    //   187: aload 14
    //   189: bipush 13
    //   191: fconst_0
    //   192: fastore
    //   193: aload 14
    //   195: bipush 14
    //   197: ldc 43
    //   199: ldc_w 836
    //   202: fload 12
    //   204: fsub
    //   205: fmul
    //   206: fastore
    //   207: aload 14
    //   209: bipush 15
    //   211: fconst_0
    //   212: fastore
    //   213: aload 14
    //   215: bipush 16
    //   217: fconst_0
    //   218: fastore
    //   219: aload 14
    //   221: bipush 17
    //   223: fconst_0
    //   224: fastore
    //   225: aload 14
    //   227: bipush 18
    //   229: fconst_1
    //   230: fastore
    //   231: aload 14
    //   233: bipush 19
    //   235: fconst_0
    //   236: fastore
    //   237: aload 14
    //   239: bipush 20
    //   241: fconst_0
    //   242: fastore
    //   243: aload 14
    //   245: bipush 21
    //   247: fconst_0
    //   248: fastore
    //   249: aload 14
    //   251: bipush 22
    //   253: fconst_0
    //   254: fastore
    //   255: aload 14
    //   257: bipush 23
    //   259: fconst_0
    //   260: fastore
    //   261: aload 14
    //   263: bipush 24
    //   265: fconst_1
    //   266: fastore
    //   267: aload 9
    //   269: aload 14
    //   271: invokevirtual 784    android/graphics/ColorMatrix:set    ([F)V
    //   274: aload 8
    //   276: new 786    android/graphics/ColorMatrixColorFilter
    //   279: dup
    //   280: aload 9
    //   282: invokespecial 789    android/graphics/ColorMatrixColorFilter:<init>    (Landroid/graphics/ColorMatrix;)V
    //   285: invokevirtual 793    android/graphics/Paint:setColorFilter    (Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;
    //   288: pop
    //   289: aload 8
    //   291: iconst_1
    //   292: invokevirtual 425    android/graphics/Paint:setAntiAlias    (Z)V
    //   295: aload 8
    //   297: iconst_0
    //   298: invokevirtual 796    android/graphics/Paint:setDither    (Z)V
    //   301: aload 8
    //   303: iconst_1
    //   304: invokevirtual 799    android/graphics/Paint:setFilterBitmap    (Z)V
    //   307: aload 7
    //   309: aload_0
    //   310: fconst_0
    //   311: fconst_0
    //   312: aload 8
    //   314: invokevirtual 429    android/graphics/Canvas:drawBitmap    (Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
    //   317: iload_2
    //   318: ifeq +103 -> 421
    //   321: aload_0
    //   322: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   325: aload 6
    //   327: areturn
    //   328: iload 11
    //   330: iconst_1
    //   331: irem
    //   332: i2f
    //   333: fstore 16
    //   335: fload 16
    //   337: fconst_0
    //   338: fcmpl
    //   339: ifne +14 -> 353
    //   342: getstatic 110    com/mt/mtxx/image/ImageProcess:DELTA_INDEX    [F
    //   345: iload 11
    //   347: faload
    //   348: fstore 17
    //   350: goto +74 -> 424
    //   353: getstatic 110    com/mt/mtxx/image/ImageProcess:DELTA_INDEX    [F
    //   356: iload 11
    //   358: iconst_0
    //   359: ishl
    //   360: faload
    //   361: fconst_1
    //   362: fload 16
    //   364: fsub
    //   365: fmul
    //   366: fstore 18
    //   368: getstatic 110    com/mt/mtxx/image/ImageProcess:DELTA_INDEX    [F
    //   371: iconst_1
    //   372: iload 11
    //   374: iconst_0
    //   375: ishl
    //   376: iadd
    //   377: faload
    //   378: fstore 19
    //   380: fload 18
    //   382: fload 16
    //   384: fload 19
    //   386: fmul
    //   387: fadd
    //   388: fstore 17
    //   390: goto +34 -> 424
    //   393: astore_3
    //   394: aconst_null
    //   395: astore 4
    //   397: aload_3
    //   398: astore 5
    //   400: aload 5
    //   402: invokevirtual 171    java/lang/Exception:printStackTrace    ()V
    //   405: aload 4
    //   407: areturn
    //   408: astore 10
    //   410: aload 10
    //   412: astore 5
    //   414: aload 6
    //   416: astore 4
    //   418: goto -18 -> 400
    //   421: aload 6
    //   423: areturn
    //   424: ldc_w 836
    //   427: fload 17
    //   429: ldc_w 836
    //   432: fmul
    //   433: fadd
    //   434: fstore 12
    //   436: goto -354 -> 82
    //
    // Exception table:
    //   from    to    target    type
    //   0    17    393    java/lang/Exception
    //   17    58    408    java/lang/Exception
    //   63    82    408    java/lang/Exception
    //   82    317    408    java/lang/Exception
    //   321    325    408    java/lang/Exception
    //   342    350    408    java/lang/Exception
    //   353    380    408    java/lang/Exception
  }

  public static Bitmap createScaledBitmap(Bitmap paramBitmap, int paramInt1, int paramInt2, Bitmap.Config paramConfig)
  {
    Bitmap localBitmap = null;
    try
    {
      Paint localPaint = new Paint();
      localPaint.setDither(false);
      localPaint.setAntiAlias(true);
      localPaint.setFilterBitmap(true);
      localBitmap = Bitmap.createBitmap(paramInt1, paramInt2, paramConfig);
      new Canvas(localBitmap).drawBitmap(paramBitmap, new Rect(0, 0, paramBitmap.getWidth(), paramBitmap.getHeight()), new Rect(0, 0, paramInt1, paramInt2), localPaint);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap cut(Bitmap paramBitmap, int paramInt1, int paramInt2, int paramInt3, int paramInt4, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    if (paramInt3 <= paramInt1)
      paramInt3 = paramInt1 + 1;
    if (paramInt4 < paramInt2)
      paramInt4 = paramInt2 + 1;
    int i = paramInt3 - paramInt1;
    int j = paramInt4 - paramInt2;
    try
    {
      localBitmap = Bitmap.createBitmap(i, j, paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      localPaint.setAntiAlias(true);
      localCanvas.drawBitmap(paramBitmap, new Rect(paramInt1, paramInt2, paramInt3, paramInt4), new Rect(0, 0, paramInt3 - paramInt1, paramInt4 - paramInt2), localPaint);
      if (paramBoolean)
        paramBitmap.recycle();
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap cutAndResizeRotate(Bitmap paramBitmap, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, boolean paramBoolean1, boolean paramBoolean2)
  {
    try
    {
      MTDebug.Print("cutAndResizeRotate DstW=" + paramInt1 + " DstH=" + paramInt2);
      MTDebug.Print("left=" + paramInt3 + " top=" + paramInt4 + " right" + paramInt5 + " bottom=" + paramInt6);
      MTDebug.Print("cutAndResizeRotate bmpw=" + paramBitmap.getWidth() + " bmph=" + paramBitmap.getHeight());
      System.gc();
      f = paramInt1 / (paramInt5 - paramInt3);
      if (f == 1.0F)
        localBitmap1 = Bitmap.createBitmap(paramInt1, paramInt2, paramBitmap.getConfig());
    }
    catch (Exception localException1)
    {
      try
      {
        float f;
        Canvas localCanvas1 = new Canvas(localBitmap1);
        Paint localPaint1 = new Paint();
        localPaint1.setAntiAlias(true);
        localPaint1.setDither(true);
        localPaint1.setFilterBitmap(true);
        localCanvas1.drawBitmap(paramBitmap, new Rect(paramInt3, paramInt4, paramInt5, paramInt6), new Rect(0, 0, paramInt1, paramInt2), localPaint1);
        if (paramBoolean1)
        {
          paramBitmap.recycle();
          localObject2 = localBitmap1;
          while (true)
          {
            Bitmap localBitmap2;
            Bitmap.Config localConfig;
            try
            {
              System.gc();
              return localObject2;
              if (f == 1.0F)
                break;
              MTDebug.Print("cutAndResizeRotate bmp.getWidth() * bmp.getHeight() <= 900 * 900");
              localBitmap2 = Bitmap.createBitmap(paramInt5 - paramInt3, paramInt6 - paramInt4, paramBitmap.getConfig());
              Canvas localCanvas2 = new Canvas(localBitmap2);
              Paint localPaint2 = new Paint();
              localPaint2.setAntiAlias(true);
              localPaint2.setDither(true);
              localPaint2.setFilterBitmap(true);
              localCanvas2.drawBitmap(paramBitmap, -paramInt3, -paramInt4, localPaint2);
              localConfig = paramBitmap.getConfig();
              if (!paramBoolean1)
                continue;
              paramBitmap.recycle();
              if (!paramBoolean2)
                break label411;
              MTDebug.memeryUsed("cutAndResizeRotate0");
              if (f == 1.0F)
              {
                localObject2 = localBitmap2;
                MTDebug.Print("FittingWindow copy");
                MTDebug.memeryUsed("cutAndResizeRotate1");
                continue;
              }
            }
            catch (Exception localException2)
            {
              localException2.printStackTrace();
              return localObject2;
            }
            Bitmap localBitmap3 = createScaledBitmap(localBitmap2, paramInt1, paramInt2, localConfig);
            localObject2 = localBitmap3;
            localBitmap2.recycle();
            continue;
            label411: localObject2 = localBitmap2;
            continue;
            localException1 = localException1;
            localObject1 = localException1;
            localObject2 = null;
          }
        }
      }
      catch (Exception localException3)
      {
        while (true)
        {
          Bitmap localBitmap1;
          Object localObject1 = localException3;
          Object localObject2 = localBitmap1;
          continue;
          localObject2 = null;
          continue;
          localObject2 = localBitmap1;
        }
      }
    }
  }

  public static Bitmap drawableToBitmap(Drawable paramDrawable)
  {
    Bitmap localBitmap = null;
    try
    {
      int i = paramDrawable.getIntrinsicWidth();
      int j = paramDrawable.getIntrinsicHeight();
      int k = paramDrawable.getOpacity();
      localBitmap = null;
      if (k != -1);
      for (Bitmap.Config localConfig = Bitmap.Config.RGB_565; ; localConfig = Bitmap.Config.RGB_565)
      {
        localBitmap = Bitmap.createBitmap(i, j, localConfig);
        Canvas localCanvas = new Canvas(localBitmap);
        paramDrawable.setBounds(0, 0, paramDrawable.getIntrinsicWidth(), paramDrawable.getIntrinsicHeight());
        paramDrawable.draw(localCanvas);
        return localBitmap;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static String getJpgOritation(String paramString)
  {
    try
    {
      String str = new ExifInterface(paramString).getAttribute("Orientation");
      return str;
    }
    catch (IOException localIOException)
    {
      localIOException.printStackTrace();
    }
    return "";
  }

  public static Bitmap gray(Bitmap paramBitmap)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      ColorMatrix localColorMatrix = new ColorMatrix();
      localColorMatrix.setSaturation(0.0F);
      localPaint.setColorFilter(new ColorMatrixColorFilter(localColorMatrix));
      localPaint.setAntiAlias(true);
      localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap hue(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Bitmap localBitmap1 = null;
    try
    {
      localBitmap1 = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap1);
      Paint localPaint = new Paint();
      ColorMatrix localColorMatrix = new ColorMatrix();
      int i = (int)(3.141592653589793D * (Math.min(180.0F, Math.max(-180.0F, paramFloat)) / 180.0F));
      float f1 = (float)Math.cos(i);
      float f2 = (float)Math.sin(i);
      float[] arrayOfFloat = new float[20];
      arrayOfFloat[0] = (0.213F + f1 * (1.0F - 0.213F) + f2 * -0.213F);
      arrayOfFloat[1] = (0.715F + f1 * -0.715F + f2 * -0.715F);
      arrayOfFloat[2] = (0.072F + f1 * -0.072F + f2 * (1.0F - 0.072F));
      arrayOfFloat[3] = 0.0F;
      arrayOfFloat[4] = 0.0F;
      arrayOfFloat[5] = (0.213F + f1 * -0.213F + 0.143F * f2);
      arrayOfFloat[6] = (0.715F + f1 * (1.0F - 0.715F) + 0.14F * f2);
      arrayOfFloat[7] = (0.072F + f1 * -0.072F + -0.283F * f2);
      arrayOfFloat[8] = 0.0F;
      arrayOfFloat[9] = 0.0F;
      arrayOfFloat[10] = (0.213F + f1 * -0.213F + f2 * -(1.0F - 0.213F));
      arrayOfFloat[11] = (0.715F + f1 * -0.715F + 0.715F * f2);
      arrayOfFloat[12] = (0.072F + f1 * (1.0F - 0.072F) + 0.072F * f2);
      arrayOfFloat[13] = 0.0F;
      arrayOfFloat[14] = 0.0F;
      arrayOfFloat[15] = 0.0F;
      arrayOfFloat[16] = 0.0F;
      arrayOfFloat[17] = 0.0F;
      arrayOfFloat[18] = 1.0F;
      arrayOfFloat[19] = 0.0F;
      localColorMatrix.set(arrayOfFloat);
      localPaint.setColorFilter(new ColorMatrixColorFilter(localColorMatrix));
      localPaint.setAntiAlias(true);
      localPaint.setDither(false);
      localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
      if (paramBoolean)
      {
        paramBitmap.recycle();
        return localBitmap1;
      }
    }
    catch (Exception localException)
    {
      Bitmap localBitmap2 = localBitmap1;
      localException.printStackTrace();
      return localBitmap2;
    }
    return localBitmap1;
  }

  public static Bitmap intARGB2Bimap(int[] paramArrayOfInt, int paramInt1, int paramInt2)
  {
    try
    {
      if (paramArrayOfInt.length != paramInt1 * paramInt2)
      {
        MTDebug.PrintError("bytesARGB2Bimap data.length=" + paramArrayOfInt.length + " w*h=" + paramInt1 * paramInt2);
        return null;
      }
      if (paramArrayOfInt.length > 0)
      {
        Bitmap localBitmap = Bitmap.createBitmap(paramInt1, paramInt2, MyData.mConfig);
        if (localBitmap == null)
          return null;
        localBitmap.setPixels(paramArrayOfInt, 0, paramInt1, 0, 0, paramInt1, paramInt2);
        return localBitmap;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return null;
  }

  public static Bitmap mirror(Bitmap paramBitmap, int paramInt, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      MTDebug.Print("mirror kind=" + paramInt);
      localMatrix = new Matrix();
      switch (paramInt)
      {
      case 1:
        localMatrix.preScale(-1.0F, 1.0F);
      case 2:
        while (paramBitmap.getConfig() == Bitmap.Config.RGB_565)
        {
          MTDebug.Print("mirror bmpSrc.getConfig() == Config.RGB_565");
          localBitmap = Bitmap.createBitmap(paramBitmap, 0, 0, paramBitmap.getWidth(), paramBitmap.getHeight(), localMatrix, true);
          if (localBitmap.getConfig() != Bitmap.Config.RGB_565)
            break label232;
          MTDebug.Print("mirror mirrorPic.getConfig() == Config.RGB_565");
          MTDebug.Print("mirrorPic w=" + localBitmap.getWidth() + " h=" + localBitmap.getHeight());
          if (!paramBoolean)
            break label253;
          paramBitmap.recycle();
          break label253;
          localMatrix.preScale(1.0F, -1.0F);
        }
      case 3:
      }
    }
    catch (Exception localException)
    {
      while (true)
      {
        Matrix localMatrix;
        localException.printStackTrace();
        break label253;
        localMatrix.preScale(-1.0F, 1.0F);
        localMatrix.postScale(1.0F, -1.0F);
        break;
        if (paramBitmap.getConfig() != Bitmap.Config.ARGB_8888)
          continue;
        MTDebug.Print("mirror bmpSrc.getConfig() == Config.ARGB_8888");
        continue;
        label232: if (localBitmap.getConfig() != Bitmap.Config.ARGB_8888)
          continue;
        MTDebug.Print("mirror mirrorPic.getConfig() == Config.ARGB_8888");
      }
      return null;
    }
    label253: return localBitmap;
  }

  public static Bitmap resize(Bitmap paramBitmap, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Object localObject = null;
    try
    {
      int i = paramBitmap.getWidth();
      localObject = null;
      if (paramInt1 == i)
      {
        int j = paramBitmap.getHeight();
        localObject = null;
        if (paramInt2 == j)
        {
          localObject = paramBitmap.copy(MyData.mConfig, true);
          MTDebug.Print("FittingWindow copy");
        }
      }
      while (paramBoolean)
      {
        paramBitmap.recycle();
        return localObject;
        Bitmap localBitmap = createScaledBitmap(paramBitmap, paramInt1, paramInt2, paramBitmap.getConfig());
        localObject = localBitmap;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return (Bitmap)localObject;
  }

  public static Bitmap rotate(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    if ((paramFloat == 0.0F) || (paramFloat == 360.0F));
    try
    {
      localBitmap = paramBitmap.copy(paramBitmap.getConfig(), true);
      MTDebug.Print("FittingWindow copy");
      while (paramBoolean)
      {
        paramBitmap.recycle();
        return localBitmap;
        Matrix localMatrix = new Matrix();
        localMatrix.preRotate(paramFloat);
        localBitmap = Bitmap.createBitmap(paramBitmap, 0, 0, paramBitmap.getWidth(), paramBitmap.getHeight(), localMatrix, true);
        MTDebug.printConfig(paramBitmap, "rotate src");
        MTDebug.printConfig(localBitmap, "rotate bmpDst");
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap rotate90(Bitmap paramBitmap, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap.getHeight(), paramBitmap.getWidth(), paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      localPaint.setDither(false);
      localPaint.setAntiAlias(true);
      localPaint.setFilterBitmap(true);
      Matrix localMatrix = new Matrix();
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      localMatrix.preRotate(90.0F, i / 2, j / 2);
      localMatrix.postTranslate((j - i) / 2, -(j - i) / 2);
      localCanvas.drawBitmap(paramBitmap, localMatrix, localPaint);
      if (paramBoolean)
        paramBitmap.recycle();
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  public static Bitmap rotateAndResize(Bitmap paramBitmap, float paramFloat1, float paramFloat2)
  {
    Bitmap localBitmap1 = null;
    try
    {
      Matrix localMatrix = new Matrix();
      localMatrix.preRotate(paramFloat1);
      localMatrix.preScale(paramFloat2, paramFloat2);
      if ((paramFloat2 == 1.0F) && ((paramFloat1 == 0.0F) || (paramFloat1 == 360.0F)))
      {
        localBitmap1 = paramBitmap.copy(MyData.mConfig, true);
        MTDebug.Print("FittingWindow copy");
        return localBitmap1;
      }
      Bitmap localBitmap2 = Bitmap.createBitmap(paramBitmap, 0, 0, paramBitmap.getWidth(), paramBitmap.getHeight(), localMatrix, true);
      return localBitmap2;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap1;
  }

  public static Bitmap rotateDirect(Bitmap paramBitmap, float paramFloat, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    Bitmap localBitmap1 = null;
    try
    {
      MTDebug.Print("rotateResize direct=" + paramFloat);
      if ((paramFloat == 0.0F) || (paramFloat == 360.0F))
      {
        localBitmap1 = paramBitmap.copy(paramBitmap.getConfig(), true);
        MTDebug.Print("FittingWindow copy");
        if (paramBoolean)
        {
          paramBitmap.recycle();
          return localBitmap1;
        }
      }
      else
      {
        Matrix localMatrix = new Matrix();
        boolean bool = paramFloat < 0.0F;
        localBitmap1 = null;
        if (bool)
        {
          MTDebug.Print("direct=" + paramFloat);
          localMatrix.preRotate(paramFloat);
          int i = paramBitmap.getWidth();
          int j = paramBitmap.getHeight();
          Bitmap localBitmap2 = Bitmap.createBitmap(paramBitmap, 0, 0, i, j, localMatrix, true);
          localBitmap1 = null;
          if (paramBoolean)
          {
            paramBitmap.recycle();
            paramBitmap = null;
          }
          localBitmap1 = FittingWindow(localBitmap2, paramInt1, paramInt2, true);
        }
        MTDebug.printConfig(paramBitmap, "rotate src");
        MTDebug.printConfig(localBitmap1, "rotate bmpDst");
        return localBitmap1;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap1;
  }

  public static Bitmap rotateRect(Bitmap paramBitmap, float paramFloat1, float paramFloat2, boolean paramBoolean1, boolean paramBoolean2, boolean paramBoolean3)
  {
    Bitmap localBitmap = null;
    try
    {
      int i = paramBitmap.getWidth();
      int j = paramBitmap.getHeight();
      int k = i / 2;
      int m = j / 2;
      float f1 = paramFloat1;
      if (f1 < 0.0F)
        (f1 + 360.0F);
      float f2 = (float)Math.atan(1.0F * j / i);
      MTDebug.printAvilableMemery2("rotateRect0");
      localBitmap = rotate(paramBitmap, paramFloat1, false);
      MTDebug.printAvilableMemery2("rotateRect");
      if (paramBoolean2)
        paramBitmap.recycle();
      Rect localRect = new Rect();
      int n = (i - localBitmap.getWidth()) / 2;
      int i1 = (j - localBitmap.getHeight()) / 2;
      MTDebug.Print("angle=" + paramFloat1);
      if (paramFloat1 < 0.0F)
      {
        paramFloat1 *= -1.0F;
        break label415;
        int i3;
        int i4;
        int i5;
        if (i < j)
        {
          int i2 = (int)(1.0F * i / 2.0F / Math.cos(f2 - 3.141592653589793D * paramFloat1 / 180.0D));
          i3 = (int)(i2 * Math.cos(f2));
          i4 = (int)(i2 * Math.sin(f2));
          localRect.set(k - i3, m - i4, i3 + k, i4 + m);
          if (!paramBoolean1)
            break label394;
          i5 = j;
        }
        for (int i6 = i; ; i6 = j)
        {
          localBitmap = cutAndResizeRotate(localBitmap, i5, i6, localRect.left - n, localRect.top - i1, localRect.right - n, localRect.bottom - i1, true, paramBoolean3);
          if ((paramFloat2 == 0.0F) || (paramFloat2 == 360.0F))
            break label454;
          return rotate(localBitmap, paramFloat2, true);
          int i7 = (int)(1.0F * j / 2.0F / Math.cos(f2 + 3.141592653589793D * paramFloat1 / 180.0D - 1.570796326794897D));
          i3 = (int)(i7 * Math.cos(f2));
          double d1 = i7;
          double d2 = Math.sin(f2);
          i4 = (int)(d1 * d2);
          break;
          label394: i5 = i;
        }
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
      return localBitmap;
    }
    while (true)
    {
      label415: if (paramFloat1 <= 360.0F)
      {
        if (paramFloat1 > 180.0F)
          paramFloat1 = 360.0F - paramFloat1;
        if (paramFloat1 <= 90.0F)
          break;
        paramFloat1 = 180.0F - paramFloat1;
        break;
        label454: return localBitmap;
      }
      paramFloat1 -= 360.0F;
    }
  }

  public static Bitmap rotateResize(Bitmap paramBitmap, float paramFloat1, float paramFloat2, int paramInt1, int paramInt2, boolean paramBoolean)
  {
    try
    {
      MTDebug.Print("rotateResize direct=" + paramFloat1 + " degress=" + paramFloat2);
      if ((paramFloat2 == 0.0F) || (paramFloat2 == 360.0F))
      {
        Bitmap localBitmap1 = paramBitmap.copy(paramBitmap.getConfig(), true);
        localObject2 = localBitmap1;
      }
      while (true)
      {
        Matrix localMatrix;
        Bitmap localBitmap3;
        try
        {
          MTDebug.Print("FittingWindow copy");
          if (!paramBoolean)
            continue;
          paramBitmap.recycle();
          return localObject2;
          localMatrix = new Matrix();
          if (paramFloat1 == 0.0F)
            break label276;
          MTDebug.Print("direct=" + paramFloat1);
          localMatrix.preRotate(paramFloat1);
          int i = paramBitmap.getWidth();
          int j = paramBitmap.getHeight();
          Bitmap localBitmap2 = Bitmap.createBitmap(paramBitmap, 0, 0, i, j, localMatrix, true);
          if (!paramBoolean)
            continue;
          paramBitmap.recycle();
          paramBitmap = null;
          localBitmap3 = FittingWindow(localBitmap2, paramInt1, paramInt2, true);
          if (paramFloat2 == 0.0F)
            break label269;
          StringBuilder localStringBuilder = new StringBuilder("degress=");
          MTDebug.Print(paramFloat2);
          localMatrix.reset();
          localMatrix.preRotate(paramFloat2);
          Bitmap localBitmap4 = Bitmap.createBitmap(localBitmap3, 0, 0, localBitmap3.getWidth(), localBitmap3.getHeight(), localMatrix, true);
          localObject2 = localBitmap4;
          localBitmap3.recycle();
          MTDebug.printConfig(paramBitmap, "rotate src");
          MTDebug.printConfig((Bitmap)localObject2, "rotate bmpDst");
          return localObject2;
        }
        catch (Exception localException2)
        {
        }
        localException2.printStackTrace();
        return localObject2;
        label269: localObject2 = localBitmap3;
        continue;
        label276: localMatrix.reset();
        localMatrix.preRotate(paramFloat2);
        int k = paramBitmap.getWidth();
        int m = paramBitmap.getHeight();
        Bitmap localBitmap5 = Bitmap.createBitmap(paramBitmap, 0, 0, k, m, localMatrix, true);
        localObject2 = localBitmap5;
        if (!paramBoolean)
          continue;
        paramBitmap.recycle();
        paramBitmap = null;
      }
    }
    catch (Exception localException1)
    {
      while (true)
      {
        Object localObject1 = localException1;
        Object localObject2 = null;
      }
    }
  }

  public static Bitmap saturation(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
      if (localBitmap.getConfig() == Bitmap.Config.RGB_565)
        MTDebug.Print("saturation bmpDst.getConfig() == Config.RGB_565");
      while (true)
      {
        Canvas localCanvas = new Canvas(localBitmap);
        Paint localPaint = new Paint();
        ColorMatrix localColorMatrix = new ColorMatrix();
        localColorMatrix.setSaturation(paramFloat);
        localPaint.setColorFilter(new ColorMatrixColorFilter(localColorMatrix));
        localPaint.setAntiAlias(true);
        localPaint.setDither(false);
        localPaint.setFilterBitmap(true);
        localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
        if (!paramBoolean)
          break;
        paramBitmap.recycle();
        return localBitmap;
        if (localBitmap.getConfig() != Bitmap.Config.ARGB_8888)
          continue;
        MTDebug.Print("saturation bmpDst.getConfig() == Config.ARGB_8888");
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }

  // ERROR //
  public static void savePic(String paramString, Bitmap paramBitmap, int paramInt)
  {
    // Byte code:
    //   0: new 449    java/io/File
    //   3: dup
    //   4: aload_0
    //   5: invokespecial 450    java/io/File:<init>    (Ljava/lang/String;)V
    //   8: astore_3
    //   9: new 1032    java/io/BufferedOutputStream
    //   12: dup
    //   13: new 1034    java/io/FileOutputStream
    //   16: dup
    //   17: aload_3
    //   18: invokespecial 1035    java/io/FileOutputStream:<init>    (Ljava/io/File;)V
    //   21: invokespecial 1038    java/io/BufferedOutputStream:<init>    (Ljava/io/OutputStream;)V
    //   24: astore 4
    //   26: iload_2
    //   27: iconst_1
    //   28: if_icmpne +32 -> 60
    //   31: aload_1
    //   32: getstatic 1044    android/graphics/Bitmap$CompressFormat:JPEG    Landroid/graphics/Bitmap$CompressFormat;
    //   35: bipush 85
    //   37: aload 4
    //   39: invokevirtual 1048    android/graphics/Bitmap:compress    (Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
    //   42: pop
    //   43: ldc_w 1050
    //   46: invokestatic 168    com/mt/mtxx/mtxx/MTDebug:Print    (Ljava/lang/String;)V
    //   49: aload 4
    //   51: invokevirtual 1053    java/io/BufferedOutputStream:flush    ()V
    //   54: aload 4
    //   56: invokevirtual 1054    java/io/BufferedOutputStream:close    ()V
    //   59: return
    //   60: iload_2
    //   61: iconst_2
    //   62: if_icmpne -13 -> 49
    //   65: aload_1
    //   66: getstatic 1057    android/graphics/Bitmap$CompressFormat:PNG    Landroid/graphics/Bitmap$CompressFormat;
    //   69: bipush 100
    //   71: aload 4
    //   73: invokevirtual 1048    android/graphics/Bitmap:compress    (Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
    //   76: pop
    //   77: goto -28 -> 49
    //   80: astore 5
    //   82: aload 5
    //   84: invokevirtual 485    java/io/FileNotFoundException:printStackTrace    ()V
    //   87: return
    //   88: astore 7
    //   90: aload 7
    //   92: invokevirtual 408    java/io/IOException:printStackTrace    ()V
    //   95: return
    //
    // Exception table:
    //   from    to    target    type
    //   9    26    80    java/io/FileNotFoundException
    //   31    49    80    java/io/FileNotFoundException
    //   49    59    80    java/io/FileNotFoundException
    //   65    77    80    java/io/FileNotFoundException
    //   90    95    80    java/io/FileNotFoundException
    //   49    59    88    java/io/IOException
  }

  // ERROR //
  public static void savePic2(String paramString, Bitmap paramBitmap, int paramInt)
  {
    // Byte code:
    //   0: new 449    java/io/File
    //   3: dup
    //   4: aload_0
    //   5: invokespecial 450    java/io/File:<init>    (Ljava/lang/String;)V
    //   8: astore_3
    //   9: new 1034    java/io/FileOutputStream
    //   12: dup
    //   13: aload_3
    //   14: invokespecial 1035    java/io/FileOutputStream:<init>    (Ljava/io/File;)V
    //   17: astore 4
    //   19: iload_2
    //   20: iconst_1
    //   21: if_icmpne +41 -> 62
    //   24: aload_1
    //   25: getstatic 256    com/mt/mtxx/mtxx/MyData:mConfig    Landroid/graphics/Bitmap$Config;
    //   28: iconst_1
    //   29: invokevirtual 247    android/graphics/Bitmap:copy    (Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
    //   32: astore 9
    //   34: aload_1
    //   35: invokevirtual 265    android/graphics/Bitmap:recycle    ()V
    //   38: aload 9
    //   40: getstatic 1044    android/graphics/Bitmap$CompressFormat:JPEG    Landroid/graphics/Bitmap$CompressFormat;
    //   43: bipush 85
    //   45: aload 4
    //   47: invokevirtual 1048    android/graphics/Bitmap:compress    (Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
    //   50: pop
    //   51: aload 4
    //   53: invokevirtual 1059    java/io/FileOutputStream:flush    ()V
    //   56: aload 4
    //   58: invokevirtual 1060    java/io/FileOutputStream:close    ()V
    //   61: return
    //   62: iload_2
    //   63: iconst_2
    //   64: if_icmpne -13 -> 51
    //   67: aload_1
    //   68: getstatic 1057    android/graphics/Bitmap$CompressFormat:PNG    Landroid/graphics/Bitmap$CompressFormat;
    //   71: bipush 100
    //   73: aload 4
    //   75: invokevirtual 1048    android/graphics/Bitmap:compress    (Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
    //   78: pop
    //   79: goto -28 -> 51
    //   82: astore 5
    //   84: aload 5
    //   86: astore 6
    //   88: aload 6
    //   90: invokevirtual 485    java/io/FileNotFoundException:printStackTrace    ()V
    //   93: return
    //   94: astore 8
    //   96: aload 8
    //   98: invokevirtual 408    java/io/IOException:printStackTrace    ()V
    //   101: return
    //   102: astore 11
    //   104: aload 11
    //   106: astore 6
    //   108: goto -20 -> 88
    //
    // Exception table:
    //   from    to    target    type
    //   24    51    82    java/io/FileNotFoundException
    //   51    61    82    java/io/FileNotFoundException
    //   67    79    82    java/io/FileNotFoundException
    //   96    101    82    java/io/FileNotFoundException
    //   51    61    94    java/io/IOException
    //   9    19    102    java/io/FileNotFoundException
  }

  public static void savePicHigh(String paramString, Bitmap paramBitmap, int paramInt)
  {
  }

  public static Bitmap scale(Bitmap paramBitmap, float paramFloat, boolean paramBoolean)
  {
    Object localObject = null;
    try
    {
      new Matrix().postScale(paramFloat, paramFloat);
      boolean bool = paramFloat < 1.0F;
      localObject = null;
      if (!bool)
      {
        localObject = paramBitmap.copy(MyData.mConfig, true);
        MTDebug.Print("FittingWindow copy");
      }
      while (paramBoolean)
      {
        paramBitmap.recycle();
        return localObject;
        Bitmap localBitmap = createScaledBitmap(paramBitmap, (int)(paramFloat * paramBitmap.getWidth()), (int)(paramFloat * paramBitmap.getHeight()), paramBitmap.getConfig());
        localObject = localBitmap;
      }
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return (Bitmap)localObject;
  }

  public static Bitmap test(Bitmap paramBitmap)
  {
    while (true)
    {
      try
      {
        byte[] arrayOfByte = bitmap2ByteARGB(paramBitmap);
        int i = 0;
        int j = 0;
        if (i >= paramBitmap.getHeight())
        {
          return bytesARGB2Bimap(arrayOfByte, paramBitmap.getWidth(), paramBitmap.getHeight());
          if (k < paramBitmap.getWidth())
            continue;
          i++;
          continue;
          arrayOfByte[(j + 0)] = 0;
          arrayOfByte[(j + 1)] = 0;
          j += 4;
          k++;
          continue;
        }
      }
      catch (Exception localException)
      {
        localException.printStackTrace();
        return null;
      }
      int k = 0;
    }
  }

  public static Bitmap toARGB(Bitmap paramBitmap)
  {
    Bitmap localBitmap = null;
    try
    {
      localBitmap = Bitmap.createBitmap(paramBitmap.getWidth(), paramBitmap.getHeight(), paramBitmap.getConfig());
      Canvas localCanvas = new Canvas(localBitmap);
      Paint localPaint = new Paint();
      localPaint.setAntiAlias(true);
      localCanvas.drawBitmap(paramBitmap, 0.0F, 0.0F, localPaint);
      return localBitmap;
    }
    catch (Exception localException)
    {
      localException.printStackTrace();
    }
    return localBitmap;
  }
}

看到了JNI就知道它相关的这些东西最终都是通过C去实现的。

  public native void AutoWhiteBalance(byte[] paramArrayOfByte, int paramInt1, int paramInt2);

C它最终打包会生成一个.so.这个.so里面的东西你想猜到它的C是怎么写的还是挺麻烦的。所以说呢咱们想看一看它的特效是怎么实现的愿望基本上就泡汤了。但是呢虽说咱们不知道它是怎么实现的,但是咱们可以用。只需要知道这里面的方法传进去的参数都是什么样的含义,那我也可以拿一张图片然后把对应的参数给它传进去。传进去之后我已经拿到了它native方法的所有的声明。我拿着这个.so文件和这个JNI的类,只要我参数传的没问题咱们也可以实现相同的效果。

如果你想把这个.so放到x86的架构下这样的一个设备,你的.so不能运行.它只支持arm平台的.所以咱们就不能在X86运行它了.


这么多效果咱们就挑一个来.有一个参数比较少的.

  public native void StyleLomoB(int[] paramArrayOfInt, int paramInt1, int paramInt2);

创建一个安卓工程,把图片放在SD卡,把图片加载进来,加载进来之后把它转换成一个Bitmap对象,通过这个Bitmap对象就可以获取到一个int类型的数组.把这个数组丢给它,再获取一下图片的高度,获取一下图片的宽度.这样咱们就可以调用这个StyleLomoB.看一下它的返回值是void,说明直接修改的就是这个int类型的数组.实际上咱们都是一个数码的照片,

安卓中每一个像素都对应着ARGB_8888四个byte.就是说一个像素正好就是一个int类型的元素.用一个int类型的元素来表示一个像素的颜色信息.拿着这个Bitmap获得这个int类型的数组,实际上这个数组就保存了每一个像素的颜色信息.你丢进去之后它直接对这个数组进行了处理.这个函数运行完了实际上你的这个数组里面的像素所有的像素实际上已经带着特效了.你再拿着这个数组再给它创建出一个新的Bitmap,再给它还原成一个Bitmap.这个时候咱们拿着这个Bitmap再展示出来.这个时候实际上已经加了特效了.愿意保存你再把这个Bitmap给它存起来.特效的效果也可以给它存成具体的文件.

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7148649.html