- 浏览: 880110 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 885在j2me项目中引入一个jar包,然后使用jar包里面的类做 ... -
wtk的默认模拟器修改
2014-04-29 00:07 623点击wtk目录下/bin/DefaultDevicew.e ... -
Could not find jar tool executable问题解决
2014-03-21 00:28 1258eclipse 中,在用PROGUARD生成混淆包Obfus ... -
WTK 模拟器的内存修改
2013-10-18 13:15 753在使用WTK模拟器运行较大的程序时偶尔会报内存不足的异常,解 ... -
j2me中sprite的旋转参考点的设定
2013-09-23 15:07 519默认在图片的左上角,可以用defineReferencePix ... -
J2ME用大华模拟器开发的一个小头痛的问题!
2013-08-21 15:06 803throw new UnsupportedOperation ... -
java/lang/OutOfMemoryError:Maximum byte code length (32kB) exceeded .
2013-02-05 17:18 1143Uncaught exception java/lang/ ... -
浅谈J2me游戏如何快速移植到Android
2012-06-12 14:25 789前言 小白:“老大,你让做的三个J2me游戏搞定了,请看DEM ... -
J2ME与Android系统的常用类、方法对比
2012-06-12 11:51 1022J2ME与Android系统的常用类、方法对比 ... -
serviceRepaints方法实现强制刷屏
2012-06-11 12:38 1110SUN在它的API里,说过。Forces any pendin ... -
J2ME中Random类的使用
2012-05-18 15:38 1155J2ME中,由于大部分的游戏都会涉及到随机性的事件,Rando ... -
J2ME程序开发全方位基础讲解
2012-05-17 11:16 922本文转自:http://innovator.samsung ... -
J2ME游戏设计框架
2012-05-16 10:59 828因为移动设备运行速度问题,J2ME开发比较注重程序的复杂度 ... -
打造自由换色的png图片类 .
2012-05-10 16:21 857想像一下,有一个游戏,里面有很多种颜色的人,图片完全一样,只是 ... -
png图片结构分析与加密解密原理[转]
2012-05-10 11:06 3608PNG文件格式分为PNG-24和PNG-8,其最大的区别是PN ... -
NetBeans 字体设置
2012-05-03 11:21 1048最近下载了最新的NetBeans6.8玩玩,其实NetBean ... -
Netbeans 7和Subversion(svn) 1.7
2012-05-02 23:07 2075Netbeans的SVN插件,最后一次更新是07年了,所以它根 ... -
keyPressed接受不到部分按键
2009-04-09 18:04 1207今天测试一个贪吃蛇游戏,结果不管怎样按键,就是不接受到部分数字 ...
相关推荐
PNG和ICO是两种常见的图像格式,分别用于不同的应用场景。PNG(Portable Network Graphics)是一种无损压缩...了解这种工具的使用方法和工作原理,有助于提高工作效率,确保图标在各种平台和环境中都能呈现出最佳效果。
常见的图标格式有两种:ICO和PNG。ICO是Windows操作系统中的标准图标格式,它允许在一个文件中包含多个不同尺寸和颜色深度的图标,以适应不同的显示需求。PNG(Portable Network Graphics)则是一种无损压缩的位图...
2. **添加文件**:在程序界面中,有一个“添加文件”或类似选项,用户可以通过这个功能将需要转换的PNG图片导入到软件中。 3. **选择输出目录**:转换后的JPG图片会保存在指定的输出目录下,用户应提前设置好这一...
以下是关于“PNG图片转化为icon透明图标方法”的详细步骤和相关知识点: 一、PNG图片转化为ICON图标 1. 准备工作:首先,你需要一个PNG格式的图像,这种格式通常具有透明背景,适用于制作图标。 2. 使用在线转换...
总之,PNG图片转ISO图标.zip文件包为用户提供了自制个性化图标的方法,通过将PNG图像转换为Windows系统的ICO格式,可以将这些图标应用于各种系统元素,增加系统的视觉吸引力和个性化程度。如果你是一个喜欢自定义...
总结来说,将PNG图片转换为YUV格式涉及图像读取、颜色空间转换、处理Alpha通道(如果存在)、存储YUV数据以及输出YUV文件等多个步骤。C++通过利用libpng和OpenCV等库,可以高效地完成这个过程。了解并实践这一转换,...
通常,24位PNG图像具有丰富的色彩,能够表示超过1600万种颜色,而8位PNG图像只能表示256种颜色。在某些情况下,如存储空间限制、网页优化或者特定应用需求,可能需要将24位PNG图像转换为8位PNG图像。在本教程中,...
在“PNG图标图片大全”这个压缩包中,包含超过2000张PNG格式的图标,这些图标设计用于移动开发和网站开发。这意味着它们涵盖了各种常见的功能和类别,例如设置、导航、社交、信息提示、购物、媒体控制等。在移动应用...
以下是一些关于如何在Java中处理PNG图片透明度的关键知识点: 1. **Java图像库**: Java标准库提供了`java.awt`和`javax.imageio`包,用于读取、写入和操作图像。例如,`BufferedImage`类是处理图像的主要类,它支持...
这个"PNG图片转换工具"正是为此目的而设计的。 PNG是一种无损压缩的图像格式,支持透明度和24位色彩,广泛用于网页设计和数字图像处理。其优点在于它能保持图像质量不降低,尤其是在处理有大量透明或半透明像素的...
使用这样的工具,用户可以直接将一批PNG图片批量转换为ICO格式,省去了手动调整和转换的麻烦。 转换ICO到PNG的过程中,主要关注点在于保持图像质量和尽可能还原原始的透明效果。由于ICO文件中可能包含多种尺寸的...
然而,由于某些平台或功能需求,可能需要将PNG图片转换为ICO格式。 批量转换的过程大大提高了效率,特别是在处理大量图像时。传统的单个文件转换方法不仅耗时,而且繁琐。通过批量转换工具,用户可以一次性选择多个...
这就是"png图片转换图标工具"如ToYcon存在的原因。 ToYcon是一款小巧但功能强大的图形转换软件,专门用于将PNG图像文件转换成ICO图标。它的主要优点在于其易用性,用户只需简单地通过鼠标拖放操作就能完成转换,极...
本文将详细介绍如何解决IE6下的PNG图片背景色不透明问题。 首先,理解问题的原因至关重要。IE6不完全支持PNG8和PNG24这两种PNG格式。特别是PNG24,它包含了24位颜色和一个alpha通道,用于实现半透明效果,但IE6只能...
本压缩包提供了一个名为"PNG to ICO"的程序,专门用于将PNG图片自动转换为ICO图标。这个程序简化了手动转换的过程,使得用户只需将待转换的PNG图片放入指定的"PNG文件夹"下,然后运行"SETUP.DAT"文件,转换完成后,...
这种设计使得图标可以无缝融入各种背景,无论背景是单一颜色、渐变色,还是复杂的图像,都能保持良好的视觉效果。 总的来说,这个PNG图标集合是一个宝贵的资源库,对于从事网站开发、软件界面设计或者需要图标素材...
标题中的“任意图片转8位(256色)png图片工具”指的是一个软件或程序,它能够将各种格式的图像文件转换成8位色彩深度的PNG图片。8位PNG图片意味着每个像素由8个二进制位表示,总共可以表示256种颜色,这种格式常用于...
1. **无损压缩**:PNG采用了一种基于预测和差分编码的无损压缩算法,这意味着图片在压缩后可以完全恢复到原始状态,不会丢失任何细节。 2. **透明支持**:PNG支持透明度,可以创建半透明或完全透明的图像,这对于...