Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

【Android图像处理】图像处理之-极速奔驰滤镜

$
0
0

极速奔驰,顾名思义就是模拟物体在高速运动的时的状态,但是处理后的图片看上去会比较容易让人头晕。

具体代码如下:

	//极速奔驰
	public static Bitmap ZoomBlur(Bitmap bitmap){
		int w = bitmap.getWidth();
		int h = bitmap.getHeight();
		Bitmap result = Bitmap.createBitmap(w, h, Bitmap.Config.RGB_565);

		int m_fcx = (int)(w * 32768) ;
		int m_fcy = (int)(h * 32768) ;

		final int ta = 255;
		int r,g,b,color;

		int[] oldPx = new int[w * h];
		int[] newPx = new int[w * h];

		bitmap.getPixels(oldPx, 0, w, 0, 0, w, h);
		for(int x = 0 ; x < w ; x++){
			for(int y = 0 ; y < h ; y++){
				//得到当前点的r,g,b值
				int sa = 0;
				color = oldPx[x * h + y];
				r = Color.red(color) * ta;
				g = Color.green(color) * ta;
				b = Color.blue(color) * ta;				
				sa += ta;

				int   fx = (x * 65536) - m_fcx ;
				int   fy = (y * 65536) - m_fcy ;
				final int RADIUS_LENGTH = 64;

				for (int i = 0 ; i < RADIUS_LENGTH ; i++){
					fx = fx - (fx / 16) * 30 / 1024 ;
					fy = fy - (fy / 16) * 30 / 1024 ;

					int   u = (fx + m_fcx + 32768) / 65536 ;
					int   v = (fy + m_fcy + 32768) / 65536 ;
					if (u>=0 && u<w && v>=0 && v<h)
					{
						color = oldPx[u * h + v];
						r += Color.red(color) * ta ;
						g += Color.green(color) * ta ;
						b += Color.blue(color) * ta ;
						sa += ta ;
					}
				}

				r = r / sa;
				g = g / sa;
				b = b / sa;

				//检查颜色值是否超出范围
				if(r > 255){
					r = 255;
				}else if(r < 0){
					r = 0;
				}

				if(g > 255){
					g = 255;
				}else if(g < 0){
					g = 0;
				}

				if(b > 255){
					b = 255;
				}else if(b < 0){
					b = 0;
				}
				newPx[x * h + y] = Color.rgb(r, g, b);
			}
		}
		result.setPixels(newPx, 0, w, 0, 0, w, h);		
		return result;
	}
效果如下:

                       效果图                                                                原图


在使用本算法处理图片的时候最好将图片截取成宽高相等的图片。

作者:qq_32353771 发表于2016/12/28 20:33:26 原文链接
阅读:73 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>