现在的位置: 首页 > 综合 > 正文

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

2013年09月22日 ⁄ 综合 ⁄ 共 1220字 ⁄ 字号 评论关闭

本人做了一个图片浏览器,用了一些图像处理的算法,这个是一部分,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;   
	    }

 

抱歉!评论已关闭.