📄 imageviewer.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 + -