Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之圖片Bitmap的特殊處理

Android之圖片Bitmap的特殊處理

編輯:關於Android編程

最近在做一個功能開發:當手指觸摸屏幕的時候就出現一種特效。這裡需要要五顏六色的圖片來實現很絢麗效果,今天我來講講如何用一個簡單圖片如圖(1)來實現如圖(2)的效果!

\

(圖1)

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICA8aW1nIHNyYz0="/uploadfile/Collfiles/20141229/20141229084425210.png" alt="\">

(圖2)


由上面的(圖1)可以知道其中的圖象實際上是沒有顏色的,其實就是白色和透明度來繪制的四個圓的效果圖片!怎麼才能實現右邊圖片的五顏六色的圓的圖像呢!這裡就是設計到了對bitmap圖片處理!下面是對bitmap圖片改變顏色的處理方法:

	public static Bitmap change_bitmap_for_curr_color(Bitmap curr_Bitmap, int new_color){
		if(null == curr_Bitmap){
			return curr_Bitmap;
		}
		int BLACK_COLOR = 0xff000000;
	
		int start_x = 0;
		int statr_y = 0;
		int bitmap_w = curr_Bitmap.getWidth();
		int bitmap_h = curr_Bitmap.getHeight();
		//Log.d("yu", "FingerMagic_tool change_bitmap_for_curr_color new_color="+new_color);//0xFFFF0000
		new_color &= 0x00ffffff;/× 去掉要改變顏色的透明度,這裡只是改變該圖片顏色,其透明度不改變 ×/
		//Log.d("FingerMagic_tool", "FingerMagic_tool change_bitmap_for_curr_color new_color="+new_color);
		int []pixels = new int[bitmap_w * bitmap_h]; 
		curr_Bitmap.getPixels(pixels, 0, bitmap_w, 0, 0, bitmap_w,bitmap_h);/× 這裡是取出要改變bitmap的像素數據 ×/
		int alph = 0;
		int color_int = 0;
		int curr_index = 0;
		for(int i = 0; i < bitmap_h; i++){/× 這裡就是改變取出的bitnap的像素數據,是其顏色是我們要改變的顏色 ×/
			for(int j = 0; j < bitmap_w; j++){
				curr_index = bitmap_w * i + j;
				color_int = pixels[curr_index];
				if(0 == color_int){  /× 如果該像素點沒有顏色,全透明則不處理 ×/
					continue;
				}
				alph = color_int & BLACK_COLOR;  /× 取出該像素點的透明度值 ×/
				if(alph == 0){/× 如果這個像素點是全透明的則不做處理 ×/
					continue;
				}
				color_int = new_color | alph;/× 把我們需要的顏色加上該像素點的透明度來取代原來的像素點 ×/
			
				pixels[curr_index] = color_int;
			}

		}

                
                 /× 最後利用我們修改完成的像素數據值來創建我們需要的圖片 ×/ 
		Bitmap result = Bitmap.createBitmap(pixels, bitmap_w, bitmap_h, Config.ARGB_8888);
		//result.setPixels(pixels, 0, bitmap_w, 0, 0, bitmap_w, bitmap_h);

		return result;
	}


   

這就可以了!所有的關鍵點,我都加上注釋了。

不過,對於上面的代碼還是存在缺陷的,請不要用來處理超大的bitmap, 很有可能溢出哦!還有,如果處理不只一個小圖片,請開辟線程來處理哦。


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