📄 图片翻转函数.txt
字号:
旋转:
NOKIA有DirectGraphics可以实现。
midp1.0:
import javax.microedition.lcdui.*;
public class Displayable1
extends Canvas {
public Displayable1() {
try {
img = Image.createImage("/a.png");
}
catch (Exception e) {}
}
Image img;
protected void paint(Graphics g) {
Image temp;
g.drawImage(img, 0, 0, 0); //原始图片
temp = rotate90Image(img);
g.drawImage(temp, 70, 10, 0);
temp = rotate180Image(img);
g.drawImage(temp, 70, 40, 0);
temp = rotate270Image(img);
g.drawImage(temp, 40, 40, 0);
temp = flipVerticalImage(img);
g.drawImage(temp, 25, 0, 0);
temp = flipHorizontalImage(img);
g.drawImage(temp, 0, 40, 0);
//flipVerticalDraw(img, g, 25, 0); //水平镜像
//flipHorizontalDraw(img, g, 0, 40); //垂直镜像
//rotate90Draw(img, g, 70, 10); //原始图片的90度的旋转
//rotate180Draw(img, g, 70, 40); //原始图片的180度的旋转
//rotate270Draw(img, g, 40, 40); //原始图片的270度的旋转
}
//图像 90 度 翻转
public Image rotate90Image(Image original) {
Image copy;
copy = Image.createImage(original.getHeight(), original.getWidth());
Graphics g = copy.getGraphics();
rotate90Draw(original, g, 0, 0);
return Image.createImage(copy);
}
public Image rotate180Image(Image original) {
Image copy;
copy = Image.createImage(original.getWidth(), original.getHeight());
Graphics g = copy.getGraphics();
rotate180Draw(original, g, 0, 0);
return Image.createImage(copy);
}
public Image rotate270Image(Image original) {
Image copy;
copy = Image.createImage(original.getHeight(), original.getWidth());
Graphics g = copy.getGraphics();
rotate270Draw(original, g, 0, 0);
return Image.createImage(copy);
}
public Image flipVerticalImage(Image original) {
Image copy;
copy = Image.createImage(original.getWidth(), original.getHeight());
Graphics g = copy.getGraphics();
flipVerticalDraw(original, g, 0, 0);
return Image.createImage(copy);
}
public Image flipHorizontalImage(Image original) {
Image copy;
copy = Image.createImage(original.getWidth(), original.getHeight());
Graphics g = copy.getGraphics();
flipHorizontalDraw(original, g, 0, 0);
return Image.createImage(copy);
}
public void rotate90Draw(Image original, Graphics g, int x, int y) { //90旋转
int clipWidth=g.getClipWidth(),clipHeight=g.getClipHeight();
int w = original.getWidth(),h = original.getHeight();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
g.setClip(x + j, y + i, 1, 1);
g.drawImage(original, x + j - i, y - h + j + i + 1, 0);
}
}
g.setClip(0,0,clipWidth,clipHeight);
}
//图像 180 度 翻转
public void rotate180Draw(Image original, Graphics g, int x, int y) {
int clipWidth=g.getClipWidth(),clipHeight=g.getClipHeight();
int w = original.getWidth(),h = original.getHeight();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
g.setClip(x + i, y + j, 1, 1);
g.drawImage(original, x - w + i * 2 + 1, y - h + j * 2 + 1, 0);
}
}
g.setClip(0,0,clipWidth,clipHeight);
}
//图像 270 度 翻转
public void rotate270Draw(Image original, Graphics g, int x, int y) { //270旋转
int clipWidth=g.getClipWidth(),clipHeight=g.getClipHeight();
int w = original.getWidth(),h = original.getHeight();
for (int i = 0; i < w; i++) {
for (int j = 0; j < h; j++) {
g.setClip(x + j, x + i, 1, 1);
g.drawImage(original, x + j + i - w + 1, y + i - j, 0);
}
}
g.setClip(0,0,clipWidth,clipHeight);
}
//图像 垂直镜像
public void flipVerticalDraw(Image original, Graphics g, int x, int y) {
int clipWidth=g.getClipWidth(),clipHeight=g.getClipHeight();
int w = original.getWidth(), h = original.getHeight();
for (int i = 0; i < w; i++) {
g.setClip(x + i, y, 1, h);
g.drawImage(original, x - w + i * 2 + 1, y, 0);
}
g.setClip(0,0,clipWidth,clipHeight);
}
//图像 水平镜像
public void flipHorizontalDraw(Image original, Graphics g, int x, int y) {
int clipWidth=g.getClipWidth(),clipHeight=g.getClipHeight();
int w = original.getWidth(), h = original.getHeight();
for (int j = 0; j < h; j++) {
g.setClip(x, y + j, w, 1);
g.drawImage(original, x, y - h + j * 2 + 1, 0);
}
g.setClip(0,0,clipWidth,clipHeight);
}
}
图片缩放:
应该会涉及到各个象素点的颜色,还有邻近点的颜色混和。。。没做过。
gz
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -