关于android系统图像特效处理之锐化效果

来源:互联网 发布:eclipse java mars 编辑:程序博客网 时间:2024/04/28 06:08

本人做了一个图片浏览器,用了一些图像处理的算法,这个是一部分,APK安装包地址:http://static.apk.hiapk.com/html/2012/08/797656.html,欢迎下载和反馈;

关于android系统图像特效处理之锐化效果

 public static Bitmap sharpenImageAmeliorate(SoftReference<Bitmap> bmp)       {             // 拉普拉斯矩阵           int[] laplacian = new int[] { -1, -1, -1, -1, 9, -1, -1, -1, -1 };                      final int width = bmp.get().getWidth();          final int height = bmp.get().getHeight();         Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);                      int pixR = 0;           int pixG = 0;           int pixB = 0;                      int pixColor = 0;                      int newR = 0;           int newG = 0;           int newB = 0;                      int idx = 0;           float alpha = 0.3F;           int[] pixels = new int[width * height];           bmp.get().getPixels(pixels, 0, width, 0, 0, width, height); //        bmp.recycle();//        bmp = null;        for (int i = 1, length = height - 1; i < length; i++)           {               for (int k = 1, len = width - 1; k < len; k++)               {                   idx = 0;                   for (int m = -1; m <= 1; m++)                   {                       for (int n = -1; n <= 1; n++)                       {                           pixColor = pixels[(i + n) * width + k + m];                           pixR = Color.red(pixColor);                           pixG = Color.green(pixColor);                           pixB = Color.blue(pixColor);                                                      newR = newR + (int) (pixR * laplacian[idx] * alpha);                           newG = newG + (int) (pixG * laplacian[idx] * alpha);                           newB = newB + (int) (pixB * laplacian[idx] * alpha);                           idx++;                       }                   }                                      newR = Math.min(255, Math.max(0, newR));                   newG = Math.min(255, Math.max(0, newG));                   newB = Math.min(255, Math.max(0, newB));                                      pixels[i * width + k] = Color.argb(255, newR, newG, newB);                   newR = 0;                   newG = 0;                   newB = 0;               }           }                      bitmap.setPixels(pixels, 0, width, 0, 0, width, height);              return bitmap;       }