J 2 ME写真反転
6858 ワード
原文http://www.3geye.net/?3/view space-2386
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
// :
public class ImageUtil ...{
//
public final static int TRANS_NONE = 0;
// 90
public final static int TRANS_ROT90 = 5;
// 180
public final static int TRANS_ROT180 = 3;
// 270
public final static int TRANS_ROT270 = 6;
//
public final static int TRANS_MIRROR = 2;
// 90
public final static int TRANS_MIRROR_ROT90 = 7;
// 180
public final static int TRANS_MIRROR_ROT180 = 1;
// 270
public final static int TRANS_MIRROR_ROT270 = 4;
//@
//@ Image srcImage
int transform
//@
public static Image transformImage(Image srcImage, int transform) ...{
int srcW = srcImage.getWidth();
int srcH = srcImage.getHeight();
Image imgRet = null;
switch (transform) ...{
case TRANS_NONE:
imgRet = srcImage;
break;
case TRANS_ROT90:
...{
/* : :
* 1234 951
* 5678 062
* 90ab a73
* b84
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcH, srcW);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
g.drawRGB(srcRGB, 0, 1, srcH - i - 1, 0, 1, srcW, true);
}
}
break;
case TRANS_ROT180:
...{
/* : :
* 1234 ba09
* 5678 8765
* 90ab 4321
*
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcW, srcH);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
arrayExchange(srcRGB);
g.drawRGB(srcRGB, 0, srcW, 0, srcH-1-i, srcW, 1, true);
}
}
break;
case TRANS_ROT270:
...{
/* : :
* 1234 48b
* 5678 37a
* 90ab 260
* 159
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcH, srcW);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
arrayExchange(srcRGB);
g.drawRGB(srcRGB, 0, 1, i, 0, 1, srcW, true);
}
}
break;
case TRANS_MIRROR:
...{
/* : :
* 1234 4321
* 5678 8765
* 90ab ba09
*
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcW, srcH);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
arrayExchange(srcRGB);
g.drawRGB(srcRGB, 0, srcW, 0, i, srcW, 1, true);
}
}
break;
case TRANS_MIRROR_ROT90:
...{
/* : :
* 1234 b84
* 5678 a73
* 90ab 062
* 951
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcH, srcW);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
arrayExchange(srcRGB);
g.drawRGB(srcRGB, 0, 1, srcH - i - 1, 0, 1, srcW, true);
}
}
break;
case TRANS_MIRROR_ROT180:
...{
/* : :
* 1234 90ab
* 5678 5678
* 90ab 1234
*
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcW, srcH);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
g.drawRGB(srcRGB, 0, srcW, 0, srcH-1-i, srcW, 1, true);
}
}
break;
case TRANS_MIRROR_ROT270:
...{
/* : :
* 1234 159
* 5678 260
* 90ab 37a
* 48b
* */
int[] srcRGB = new int[srcW];
imgRet = Image.createImage(srcH, srcW);
Graphics g = imgRet.getGraphics();
for (int i = 0; i < srcH; i++) ...{
srcImage.getRGB(srcRGB, 0, srcW, 0, i, srcW, 1);
g.drawRGB(srcRGB, 0, 1, i, 0, 1, srcW, true);
}
}
break;
default:
imgRet = srcImage;
break;
}
return imgRet;
}
//@ INT
//@ INT
// @
//
public static final void arrayExchange(int[] b)...{
int nCount = b.length;
int nLen = nCount/2;
nCount--;
for (int i = 0; i < nLen; i++) ...{
int nTemp = b;
b = b[nCount-i];
b[nCount-i] = nTemp;
}
}
}