- 浏览: 863476 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
hzw2312:
C = sin(MLatA)*sin(MLatB)*cos(M ...
根据地球上任意两点的经纬度计算两点间的距离 -
zhang_sun:
rewind方法的limit又是多少呢?等于capacity? ...
ByteBuffer的flip,clear及rewind区别 -
kalogen:
一种每次都获取到不同的随机数的办法int ranseed=12 ...
J2ME中Random类的使用 -
kalogen:
估计部署在某个端口下吧,仔细检查一下发布的配置文件
Tomcat负载均衡和集群环境的搭建 -
zhuchao_ko:
文件大点就嗝屁了~~~
Axis 1.4 上传二进制文件(base64Binary)
对于"索引类型的图片",即肯定包含PLTE调色板的Png图片,就可以通过对调色板的修改,再通过CRC算法生成新的验证码,再还原成新图片就可以得到所要的效果,为此,我写了如下的类.
/* 用于PNG图片变色的类 使用要求,需要美工将原始图片的需要换色的点 设置为纯红色0xff0000 */
import Java.io.*;
import java.lang.*;
import javax.microedition.lcdui.*;
public class coloredImage {
public coloredImage() {
}
public Image getColoredImage(String s, int newcolor) {
try {
byte[] pixel;
InputStream is = getClass().getResourceAsStream(s);
int i = 0;
while (is.read() != -1) {
i++;
}
pixel = new byte[i];
is = null;
is = getClass().getResourceAsStream(s);
is.read(pixel);
imgConvert(pixel, newcolor);
return (Image.createImage(pixel, 0, pixel.length));
} catch (Exception e) {
return null;
}
}
public void imgConvert(byte content[], int color) {
try {
int start = 0;
int newcolor = -1;
for (int idx = 0; idx < content.length; idx++) {
if (content[idx] == 0x50 && content[idx + 1] == 0x4c
&& content[idx + 2] == 0x54 && content[idx + 3] == 0x45) {
start = idx;
break;
}
} for (int idx = 0; idx < 4; idx++) {
newcolor = pixelConvert(content[start + idx], newcolor);
}
int r, g, b, length;
length = (content[start - 4] & 0xff << 24) |
(content[start - 3] & 0xff << 16) |
(content[start - 2] & 0xff << 8) |
(content[start - 1] & 0xff);
for (int i = 0; i < length; i++) {
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) {
}
}
其中用到的源图是
运行程序后的效果为
发表评论
-
eclipse中j2me项目引入jar包后,运行时报ClassNotFoundError的解决方法
2014-07-14 17:12 817在j2me项目中引入一个jar包,然后使用jar包里面的类做 ... -
wtk的默认模拟器修改
2014-04-29 00:07 538点击wtk目录下/bin/DefaultDevicew.e ... -
Could not find jar tool executable问题解决
2014-03-21 00:28 1214eclipse 中,在用PROGUARD生成混淆包Obfus ... -
WTK 模拟器的内存修改
2013-10-18 13:15 719在使用WTK模拟器运行较大的程序时偶尔会报内存不足的异常,解 ... -
j2me中sprite的旋转参考点的设定
2013-09-23 15:07 472默认在图片的左上角,可以用defineReferencePix ... -
J2ME用大华模拟器开发的一个小头痛的问题!
2013-08-21 15:06 760throw new UnsupportedOperation ... -
java/lang/OutOfMemoryError:Maximum byte code length (32kB) exceeded .
2013-02-05 17:18 1100Uncaught exception java/lang/ ... -
浅谈J2me游戏如何快速移植到Android
2012-06-12 14:25 721前言 小白:“老大,你让做的三个J2me游戏搞定了,请看DEM ... -
J2ME与Android系统的常用类、方法对比
2012-06-12 11:51 984J2ME与Android系统的常用类、方法对比 ... -
serviceRepaints方法实现强制刷屏
2012-06-11 12:38 1058SUN在它的API里,说过。Forces any pendin ... -
J2ME中Random类的使用
2012-05-18 15:38 1109J2ME中,由于大部分的游戏都会涉及到随机性的事件,Rando ... -
J2ME程序开发全方位基础讲解
2012-05-17 11:16 850本文转自:http://innovator.samsung ... -
J2ME游戏设计框架
2012-05-16 10:59 784因为移动设备运行速度问题,J2ME开发比较注重程序的复杂度 ... -
打造自由换色的png图片类 .
2012-05-10 16:21 821想像一下,有一个游戏,里面有很多种颜色的人,图片完全一样,只是 ... -
png图片结构分析与加密解密原理[转]
2012-05-10 11:06 3543PNG文件格式分为PNG-24和PNG-8,其最大的区别是PN ... -
NetBeans 字体设置
2012-05-03 11:21 1004最近下载了最新的NetBeans6.8玩玩,其实NetBean ... -
Netbeans 7和Subversion(svn) 1.7
2012-05-02 23:07 2031Netbeans的SVN插件,最后一次更新是07年了,所以它根 ... -
keyPressed接受不到部分按键
2009-04-09 18:04 1164今天测试一个贪吃蛇游戏,结果不管怎样按键,就是不接受到部分数字 ...
相关推荐
MatLab 批量将24位PNG彩图转换为8位PNG彩图,希望能够帮助到大家。
实现java处理图片透明,png图片透明
解决IE6下PNG图片背景色不透明问题的方法
PNG2JPG是一款绿色小巧的png在线转jpg工具,界面以DOS命令界面为主,将PNG直接拖入就可以轻松转换成jpg格式,支持批量转换,并且,在不影响图片透明度的情况下,还将图片压缩至最小,方便了存储,是一款非常实用的...
俺自己写的程序,不知道能不能入大家的法眼,想偷懒的可以拿来改改就成,注:是.dat文件,自己改成.java就可以了
PNG图片转换工具. PNG图片转换成BMP图片格式
批量pdf转高清png图片,支持多文件多线程同时转换,转出支持彩色、黑白与灰度png格式图片 使用方法:双击运行软件,选择要执行程序点击确定,跳出文件夹拾取框选择文件所在文件夹,程序自动转换文件夹下所有pdf文件...
默认定义转化以下几种图标大小(32位带Alpha通道): 16*16 32*32 48*48 64*64 72*72 96*96 128*128 如果需要增添,可以自己编辑Start.bat文件 “png2ico -i "png" -o "png" -s 16 32bpp -s 24 32bpp -s 32 32bpp ...
使用方法:双击软件弹出文件拾取框选择图片
由于IE7以下不支持图片的背景的透明.根据IE特性,我们可以用IE的滤镜来实现透明处理 你只要包含下面这个pngfix.js文件就行,如下: <!--[if lt IE 7]> <script defer type="text/javascript" src="/Js/pngfix.js"> ...
这是一些常用的png图标,种类非常多,都是彩色的图标。
支持任意格式图片转换成8位png图片的工具. 适用于安卓游戏等需要减少图片体积的场合.win x86平台命令行工具. 内有readme.txt 介绍用法.
PNG转ICON,小巧、方便,可在PNG与ICON图标文件之间转换
彩色羽毛系列图标png 彩色羽毛系列图标png
图片尺寸大,或者色彩数量多特别是渐变色的多的时候,PNG的体积会明显大于JPG。 Android 的界面能用 PNG 最好是用 PNG 了,因为32位的PNG 颜色过渡平滑且支持透明。JPG是像素化压缩过的图片,质量已经下降了,要尽量...
vc中在Picture空间中显示png图片,使用重载OnPain和对话框背景色覆盖原图的方法实现了png半透明的显示并且不会加重阴影。支持bmp、jpg等多种格式
批量转换:将多张png图片转换成同种大小的ico图标 放在程序目录下的ico文件夹内。 支持转化以下几种图标大小: 16*16 32*32 48*48 64*64 72*72 96*96 128*128 256*256 512*512 1024*1024 友情提示: 图标越大,它越...
本程序实现了jpg图片、png图片、24位/32位位图转256色灰度位图图,使用了MFC框架,并且提供了保存位图的功能