J2ME 图片翻转

原文 http://www.3geye.net/?3/viewspace-2826

 

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;
        }
    }
}
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值