⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imageutil.java

📁 Micro Window Toolkit(MWT)是一个用于开发J2ME用户界面(UI)的工具包。它具有友好
💻 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 + -