程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> MIDP2.0中對圖片象素級處理(3)

MIDP2.0中對圖片象素級處理(3)

編輯:關於JAVA

在我們的游戲裡面經常會需要把當前的場景繪制成一個灰度的場景,比如說當角色死亡的時候沒,我們會把場景弄成一個灰色,那麼怎麼實現一個灰色的場景呢,一個辦法就是做一個灰色的圖片,把他畫上去,但是這樣會占用我們JAR文件的大小,那麼我們現在來了解一下怎麼把一個彩色的圖片繪制成一個灰色的圖片。

我們的灰度圖片和彩色圖片一樣,也是由RGB三原色組成的,但是灰度圖片有一個特點,那就是他的RGB3個值是相等的,但是我們的彩色圖片RGB3個值之間沒有特別的關系,所以我們要做的就是把彩色圖片中RGB3個值改成一個相等的值,改成一個什麼樣的值呢,我們只要求出彩色圖片的RGB3個值的平均值,然後把RGB都改成這個平均值就好了。

先取出RGB3個值

r = (argb[i] & 0x00FF0000)>>16;//獲得red

g = (argb[i] & 0x0000ff00)>>8;//獲得green

b = argb[i] & 0x000000ff;//獲得blue

然後求r,g,b的平均值

temp = (r+g+b)/3;

再合並出新的象素值:

r = temp<<16;

g = temp<<8;

b = temp;

argb[i] = 0xff000000 | r | g | b;//合並3個色彩

最後把修改後的這個RGB數組繪制出來就ok

import Java.io.IOException;

import Javax.microedition.lcdui.Canvas;
import Javax.microedition.lcdui.Graphics;
import Javax.microedition.lcdui.Image;


/**
 * @author 劉軍
 * @version 1.0
 */
public class TCanvas extends Canvas{
 Image image;//要處理的圖片
 int argb[];
 int a= 0;//把象素的透明度初始值設置為0,然後在線程中不斷地增加這個值
 public TCanvas() {
  super();
  try {
   image = Image.createImage("/test.png");//導入圖片
  } catch (IOException e) {
   e.printStackTrace();
  }
  argb = new int[image.getWidth()*image.getHeight()];
  image.getRGB(argb,0,image.getWidth(),0,0,image.getWidth(),image.getHeight());//獲得圖片的ARGB值
  int temp;
  int r,g,b;
  
  for(int i=0;i<argb.length;i++)
  {
   r = (argb[i] & 0x00FF0000)>>16;//獲得red值
   g = (argb[i] & 0x0000ff00)>>8;//獲得green值
   b = argb[i] & 0x000000ff;//獲得blue值
   temp = (r+g+b)/3;//求他們的平均值,並把r,g,b的值都等於這個值,當RGB三個值相等的時候這個象素的色彩就是灰度的了
   r = temp<<16;
   g = temp<<8;
   b = temp;
   argb[i] = 0xff000000 | r | g | b;//合並3個色彩
  }
 }

 protected void paint(Graphics g) {
  g.setColor(0xffffff);
  g.fillRect(0,0,getWidth(),getHeight());
  g.setColor(0);
  g.drawImage(image,0,0,Graphics.TOP|Graphics.LEFT);
  g.drawRGB(argb,0,image.getWidth(),0,100,image.getWidth(),image.getHeight(),true);// 畫象素數組
  g.drawString(a+"",10,90,Graphics.TOP|Graphics.LEFT);
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved