r=content[start+4+i]&0xff;
g=content[start+4+i+1]&0xff;
b=content[start+4+i+2]&0xff;
if(r==255&&g==0&&b==0)
{
r=color>>16&0xff;
g=color>>8&0xff;
b=color&0xff;
content[start+4+i]=(byte)r;
content[start+4+i+1]=(byte)g;
content[start+4+i+2]=(byte)b;
}
newcolor = pixelconvert(content[start+4+i], newcolor);
newcolor = pixelconvert(content[start+4 +i+ 1], newcolor);
newcolor = pixelconvert(content[start+4 +i+ 2], newcolor);
}
newcolor=~newcolor;
content[start+4+length]=(byte)(newcolor>>24);
content[start+4+length+1]=(byte)(newcolor>>16);
content[start+4+length+2]=(byte)(newcolor>>8);
content[start+4+length+3]=(byte)(newcolor);
}
catch(exception e){}
}
/**
* crc检验算法
* @param pixel 像素
* @param color 颜色值
* @return
*/
public int pixelconvert(byte pixel, int color)
{
int tmp = pixel & 0xff;
color ^= tmp;
for(int idx = 0; idx < 8; idx++)
if((color & 1) != 0)
color = color >>> 1 ^ 0xedb88320;
else
color >>>= 1;
return color;
}
}
这个类提供了一个转换图片颜色的方法getcoloredimage,只要将源图片的路径以及需要转换的新颜色作为参数调用就可以得到转换后的图片.
相应的我把我的主类写出来供大家参考其用法.
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
import com.nokia.mid.ui.*;
import java.io.*;
public class pengzhuang extends midlet
{
class test extends fullcanvas
{
image[] a;
byte[] pix;
coloredimage ci;
public test()
{
ci=new coloredimage();
a=new image[4];
a[0]=ci.getcoloredimage("/char.png",0x0000ff);
a[1]=ci.getcoloredimage("/char.png",0x00ff00);
a[2]=ci.getcoloredimage("/char.png",0xffffff);
a[3]=ci.getcoloredimage("/char.png",0x00ffff);
}
public void keypressed(int i)
{
}
public void paint(graphics g)
{
g.setcolor(0xffffff);
g.fillrect(0,0,getwidth(),getheight());
g.drawimage(a[0],0,0,0);
g.drawimage(a[1],30,30,0);
g.drawimage(a[2],60,60,0);
g.drawimage(a[3],90,90,0);
}
}
private display display;
test t;
public pengzhuang()
{
try
{
t=new test();
}
catch(exception e)
{
}
display=display.getdisplay(this);
}
public void startapp()
{
display.setcurrent(t);
}
public void pauseapp(){
}
public void destroyapp(boolean boo){
}
}
其中用到的源图是
运行程序后的效果为
呵呵,不枉了一晚上的心血,欢迎大家拍砖
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器