MIDP2.0中提供了對圖片的象素級的處理,利用這一點,我們可以對圖片進行相關的處理,比如半透明,把彩色圖片處理成灰度圖片,以及圖片變色效果都可以在J2ME裡很方便地實現。
在進行這些操作之前,我們必須先了解Java中的一些位操作符:
<<,>>,&,|,主要是這幾個操作符,下面我們就開始我們的操作
1、半透明處理
在PNG裡每個象素是一個ARBG格式,是一個8位的十六進制的數字,比如0xff121212,這個東西描述了圖片的一個象素,我們可以通過Image類中的getRGB(int[] rgbData, int offset, int scanlength, int x, int y, int width, int height) 方法獲得一個rgbData,這個rgbData就保存了圖片所對應的象素信息,取出象素信息之後我們需要對其進行透明效果的處理,透明效果的值是保存在8位中的最高2位,你可以把這個象素值轉換成16進制輸出,一般情況下最高2位應該都是為FF,也就是不透明,我們現在需要把這個FF改成一個比他小的值,那麼我們的圖片就透明了,最高位為00的時候圖片就全透明了
其實8位16進制對應了32位的2進制,那麼我們可以通過下面的方法取出他的最高2位
A = Argb>>24//把這個數向右移動24位,那麼剩下的8位就是我們要的最高位了
修改之後我們再通過下面的方法可以把他存回去
Argb = a<<24 |( argb & 0x00FFFFFF);
那麼我們通過循環把這個圖片的所有象素信息都改變之後,在用改變的象素信息來構造一個圖片,或者這個通過我們的Graphics 下面的drawRGB
方法直接畫出來的就是一個半透明效果的圖片了,你可以在畫這個圖片之前先畫一個其他的圖片,這樣你就可以很明顯地看到效果了