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

📄 imageviewer.java

📁 手机资源管理系统
💻 JAVA
字号:
package com.cuit.lui;
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.io.*;
import javax.microedition.io.file.*;
public class ImageViewer extends Panel {
	Image image;

	private int defaultScale = 5;

	public ImageViewer(FileConnection fc) {
		super();
		initialImage(fc);

	}

	private void initialImage(FileConnection fc) {
		try {
			System.out.println(fc.getURL());
			InputStream in=fc.openInputStream();
			image = Image.createImage(in);
			in.close();
			in=null;
		} catch (Exception e) {
			Lfm.lscreen.showAlert(null, "loading image error!!");
			System.out.println("loading image error!");
			e.printStackTrace();
		}

	}

	/*
	 * 调整图片大小 destW 调整后的宽,destH调整后的高
	 */
	private Image effect_resizeImage(Image src, int destW, int destH) {
		int srcW = src.getWidth();
		int srcH = src.getHeight();

		int[] destPixels = new int[destW * destH];

		int[] srcPixels = getPixels(src);

		for (int destY = 0; destY < destH; ++destY) {
			for (int destX = 0; destX < destW; ++destX) {
				int srcX = (destX * srcW) / destW;
				int srcY = (destY * srcH) / destH;
				destPixels[destX + destY * destW] = srcPixels[srcX + srcY
						* srcW];
			}
		}

		return drawPixels(destPixels, destW, destH);
	}

	/*
	 * 获取图片RGB数据,并返回大小为width*height大小的一维数组
	 */
	private int[] getPixels(Image src) {
		int w = src.getWidth();
		int h = src.getHeight();
		int[] pixels = new int[w * h];
		src.getRGB(pixels, 0, w, 0, 0, w, h);
		return pixels;
	}

	/*
	 * 将pixels[]里的数据,生成一张图片,图片宽为w,高为h
	 */
	private Image drawPixels(int[] pixels, int w, int h) {
		Image image = Image.createRGBImage(pixels, w, h, true);
		pixels = null;
		return image;
	}

	private void zoomIn() {
		image = effect_resizeImage(image, image.getWidth() + defaultScale,
				image.getHeight() + defaultScale);
	}

	private void zoomOut() {
		int originalWidth = image.getWidth();
		int originalHeight = image.getHeight();
		if ((originalWidth - defaultScale) <= 0
				|| (originalHeight - defaultScale) <= 0) {

			return;
		}
		image = effect_resizeImage(image, image.getWidth() - defaultScale,
				image.getHeight() - defaultScale);
	}

	public void setScale(int scale) {
		if (scale <= 0) {
			return;
		}
		defaultScale = scale;
	}

	public void paint(Graphics g) {
		super.paint(g);
		drawImage(g);
	}

	private void drawImage(Graphics g) {
		if (g == null) {
			return;
		} else {
			g.drawImage(image, Lfm.lscreen.getWidth()/2, Lfm.lscreen.getHeight()/2, Lfm.lscreen.HVCENTER);
		}
	}

	public boolean keyEvent(int keyCode) {

		needRepaint = false;
		if (keyCode == LUIConfig.UP) {
			zoomIn();
			needRepaint = true;
		} else if (keyCode == LUIConfig.DOWN) {
			zoomOut();
			needRepaint = true;
		}else{
			needRepaint=super.keyEvent(keyCode);
		}
		
		return needRepaint;

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -