Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 【Android圖像處理】老照片濾鏡(效果)

【Android圖像處理】老照片濾鏡(效果)

編輯:關於Android編程

說到老照片,很多人就會想起兒時的照片。沒錯,老照片就是這樣的,我稱之為情懷濾鏡。

先說一下Android圖像矩陣處理(圖片來源 慕課網)

\

也就是說,每一個矩陣都對應著一個唯一的濾鏡(效果)。

那麼,老照片濾鏡(效果)是一個什麼樣的矩陣呢?

先看一下代碼:

 

	//老照片
	public static Bitmap OldPhoto(Bitmap bm){
		int Width = bm.getWidth();
		int Height = bm.getHeight();

		Bitmap bitmap = Bitmap.createBitmap(Width, Height, Bitmap.Config.ARGB_8888);

		int color = 0;
		int r,g,b,a,r1,g1,b1;

		int[] oldPx = new int[Width * Height];
		int[] newPx = new int[Width * Height];
		bm.getPixels(oldPx, 0, Width, 0, 0, Width, Height);
		
		for(int i = 0; i < Width * Height; i++){
			color = oldPx[i];

			r = Color.red(color);
			g = Color.green(color);
			b = Color.blue(color);
			a = Color.alpha(color);
			
			//老照片矩陣
			r1 = (int) (0.393 * r + 0.769 * b + 0.189 * b);
			g1 = (int) (0.349 * r + 0.686 * g + 0.168 * b);
			b1 = (int) (0.272 * r + 0.534 * g + 0.131 * b);

			//檢查各像素值是否超出范圍
			if(r1 > 255){
				r1 = 255;
			}

			if(g1 > 255){
				g1 = 255;
			}

			if(b1 == 255){
				b1 = 255;
			}
			newPx[i] = Color.argb(a, r1, g1, b1);
		}
		bitmap.setPixels(newPx, 0, Width, 0, 0, Width, Height);	
		return bitmap;
	}
老照片矩陣就是這樣的:

 

0.393 0.769 0.189
0.349 0.686 0.168
0.272 0.534 0.131

每一行之和都為1,就是說,每個點的rgb值都是原來rgb值按照這個比例實現的。

現在來看一下效果:

\

滿滿的情懷。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved