?? imageutil.java
字號:
package com.viacube.j2me.util;
import java.util.Vector;
import java.lang.String;
import java.lang.Integer;
import java.io.IOException;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
/*
* Class for dividing one big image to several small with equal size
*/
public class ImageUtil {
private Vector items = new Vector();
private int width = 0;
private int height = 0;
// Return image by index
public Image elementAt(int index){// Index of requested image in the list
return (Image) items.elementAt(index);
}
public void setImage(Image image, int index) {
items.setElementAt(Image.createImage(image), index);
}
// Return number of stored images
public int size() {
return items.size();
}
// Return width of each image
public int getWidth() {
return width;
}
// Return hright of each image
public int getHeight() {
return height;
}
// Remove all images from list
public void removeAllElements() {
items.removeAllElements();
}
// Load and divide big image to several small and store it in object
public void load(String resName, // Name of image in resouce
int width, // Width of result images
int height, // Height of result images
int count) throws IOException {
Image resImage = Image.createImage(resName);
int imgHeight = resImage.getHeight();
int imgWidth = resImage.getWidth();
if ( width == -1) width = imgHeight;
if ( height == -1) height = imgHeight;
this.width = width;
this.height = height;
for ( int y = 0 ; y < imgHeight ; y += height) {
for ( int x = 0 ; x < imgWidth ; x += width) {
Image newImage;
newImage = Image.createImage(Image.createImage(resImage, x, y, width, height, Sprite.TRANS_NONE));
newImage = Image.createImage(width, height);
newImage.getGraphics().drawImage(resImage, -x, -y, Graphics.TOP | Graphics.LEFT);
Image imImage = Image.createImage(newImage);
items.addElement(imImage);
newImage = null;
imImage = null;
}
}
}
public void load(String firstLine, String extention, int from, int to) throws IOException {
Image image = null;
for ( int i = from ; i <= to ; i++) {
image = Image.createImage(firstLine + Integer.toString(i) + "." + extention);
items.addElement(image);
}
if ( image != null) {
height = image.getHeight();
width = image.getWidth();
}
else {
height = width = 0;
}
}
public Image zoomImage(Image src, int desW, int desH) {
Image desImg = null;
int srcW = src.getWidth(); // source image width
int srcH = src.getHeight(); // source image height
int[] srcBuf = new int[srcW * srcH]; // source image pixel
src.getRGB(srcBuf, 0, srcW, 0, 0, srcW, srcH);
// compute interpolation table
int[] tabY = new int[desH];
int[] tabX = new int[desW];
int sb = 0;
int db = 0;
int tems = 0;
int temd = 0;
int distance = srcH > desH ? srcH : desH;
for ( int i = 0 ; i <= distance ; i++) { /* vertical direction */
tabY[db] = sb;
tems += srcH;
temd += desH;
if ( tems > distance) {
tems -= distance;
sb++;
}
if ( temd > distance) {
temd -= distance;
db++;
}
}
sb = 0;
db = 0;
tems = 0;
temd = 0;
distance = srcW > desW ? srcW : desW;
for ( int i = 0 ; i <= distance ; i++) { /* horizontal direction */
tabX[db] = (short) sb;
tems += srcW;
temd += desW;
if ( tems > distance) {
tems -= distance;
sb++;
}
if ( temd > distance) {
temd -= distance;
db++;
}
}
// set transparence
// int a= 100;//set the transparence of pixel 100
// for(int i=0;i<srcBuf.length;i++){
// srcBuf[i]=(a<<24) | (srcBuf[i] & 0x00FFFFFF);// modify the highest 2 value
// }
// formation enlarge and shorten buffer pixel
int[] desBuf = new int[desW * desH];
int dx = 0;
int dy = 0;
int sy = 0;
int oldy = -1;
for ( int i = 0 ; i < desH ; i++) {
if ( oldy == tabY[i]) {
System.arraycopy(desBuf, dy - desW, desBuf, dy, desW);
}
else {
dx = 0;
for ( int j = 0 ; j < desW ; j++) {
desBuf[dy + dx] = srcBuf[sy + tabX[j]];
dx++;
}
sy += (tabY[i] - oldy) * srcW;
}
oldy = tabY[i];
dy += desW;
}
// int a = 100;
// for(int i=0;i<desBuf.length;i++){
// desBuf[i]=(a<<24) |(desBuf[i] & 0x00FFFFFF);
// }
desImg = Image.createRGBImage(desBuf, desW, desH, true);
return desImg;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -