`
wuhua
  • 浏览: 2115988 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

 

分享到:
评论

相关推荐

    j2me图片特效包及demo程序

    在这个"j2me图片特效包及demo程序"中,我们主要关注的是如何在 J2ME 应用程序中处理和操作图像,实现各种视觉效果。下面我们将详细探讨这些知识点: 1. **图片加载**:在 J2ME 中,通常使用 ` javax.microedition....

    j2me 的关于图片的处理 源码(缩放,裁剪,调整大小,镜像,对比度亮度调整,黑白,线条,粉笔画)

    本文将深入探讨如何使用J2ME进行图片处理,包括缩放、裁剪、调整大小、镜像翻转、对比度和亮度调整、黑白效果、线条艺术以及粉笔画效果。我们将以`ImageUtil.java`为例,讲解源码中封装的类和方法。 首先,`...

    tengge手机端j2me编程教程完整版

    ┃3.7 图片的翻转 ┃3.8 绘制透明图片 ┃第三章教程打包下载 ┗━━━━━━━━━━━ ┌第四章 j2me游戏开发基础 ┃4.1 游戏画布的使用 ┃4_2.游戏精灵的使用 ┃4_3.图层管理器的使用 ┃4_4.游戏精灵旋转和其他...

    j2me游戏开发实例

    - **MIDP 2.0**:移动信息设备简表2.0,增强了对游戏的支持,提供了处理游戏相关技术的API,如`javax.microedition.lcdui.game`包中的`Sprite`类用于图片翻转。 #### 四、开发环境搭建 1. **J2ME开发工具选择**:...

    Work with sprites in J2ME,Work with sprites in J2ME

    随着MIDP 2.0(Mobile Information Device Profile)的引入,J2ME增加了对精灵的支持,这是一种具有额外属性和方法以促进动画、变换(旋转、翻转和镜像)以及碰撞检测的图像。 ### 1. 精灵的基础知识 在J2ME中,...

    手机游戏 记忆牌j2me

    【压缩包子文件的文件名称列表】"j2me的记忆牌" 这个文件名可能包含了游戏的主程序或资源文件,可能是.java文件(Java源代码),.jad和.jar文件(编译后的Java应用),或者是图片、音频等资源文件。 在J2ME中开发...

    开发中j2me与android的对比

    在工程结构上,J2ME项目通常分为Res(资源文件)和Src(源代码)目录,其中Res包含图片和音频等资源,而Src则存放源代码。相比之下,Android项目的结构更为复杂,除了Src外,还包括Res目录下的多个子目录:drawable...

    使用J2ME开发华容道游戏

    开发华容道游戏将使用J2ME的MIDP2.0版本,因为它提供了对游戏开发的支持,如javax.microedition.lcdui.game包中的Sprite类,可用于图片翻转。为了开发,安装Sun公司的Wireless Toolkit (WTK) 2.0作为模拟器,因为它...

    J2ME黑白棋游戏手机版 v2.1完整源码.zip

    7. 资源管理:游戏可能包含音效、图片等资源,J2ME提供了ResourceLocator和Image类来加载和显示这些资源。 学习这个源码,开发者不仅可以了解J2ME的基本编程技巧,还能深入理解游戏开发中的策略设计、性能优化和...

    j2me华容道开发教程+代码

    对于华容道游戏,调研主要关注游戏规则和现有的技术解决方案,如J2ME的MIDP2.0,它提供了对游戏开发的支持,尤其是`javax.microedition.lcdui.game.Sprite`类,用于处理图像翻转,这对于游戏动画至关重要。...

    tengge手机端j2me编程教程.doc

    7. **图片翻转**:实现图像的水平或垂直翻转。 8. **透明图片绘制**:处理图像的透明度。 【J2ME游戏开发基础】 第四章主要讲解J2ME游戏开发中的关键概念: 1. **游戏画布**:游戏的核心显示区域。 2. **游戏精灵...

    J2ME游戏开发

    MIDP2.0引入了javax.microedition.lcdui.game包,包含了一些专为游戏设计的类,如Sprite类,可以用于处理图像的翻转和动画效果,这对于创建动态的游戏场景非常有用。 开发J2ME游戏时,通常需要一个模拟器来测试代码...

    JAVA源码J2ME黑白棋游戏手机版v2.1完整源码

    - **res**: 资源文件,如图片、声音等。 #### 2. 关键类与接口 - **GameCanvas**: 继承自Canvas,实现游戏逻辑的核心类。 - **Board**: 用于表示棋盘状态,包括棋子的放置与翻转等操作。 - **Piece**: 表示棋子的类...

    J2ME黑白棋游戏手机版 v2.1完整源码

    6. **资源管理**:J2ME平台的资源有限,因此源码中可能会有优化图片、声音和其他资源加载和管理的策略。 7. **错误处理与调试**:源码中应包含错误检测和异常处理代码,帮助开发者在遇到问题时进行调试和修复。 8....

    图片处理部分函数

    总结来说,这段代码和文档提供了一个跨平台的图片处理工具包,特别关注了在资源有限的J2ME环境中如何高效地处理图片,以实现基本的裁剪、翻转和旋转功能。开发者可以通过调整模式参数来实现所需的效果,同时保持代码...

    基于Java的实例开发源码-J2ME黑白棋游戏手机版 v2.1完整源码.zip

    7. **资源管理**:游戏可能包含图像、声音等资源,开发者需要知道如何在J2ME中加载和管理这些资源,如使用Image类加载图片,播放音频可能需要用到MIDP的MidiPlayer或WavePlayer。 8. **优化与性能**:由于J2ME运行...

    在J2ME/MIDP中实现图像旋转

    但J2ME对此提供的支持却十分有限,如MIDP2.0仅支持图像成90度整数倍的旋转。针对这种情况,本文提出了一种实现图像任意角度旋转的方案并提供了算法实现。然后对算法的应用问题进行了探讨,分析了算法的局限性。最后...

    水波纹效果

    1. **镜像翻转**:对原始图像进行垂直翻转,创建一个倒影图像。 2. **模糊处理**:为了模拟水面反射的模糊效果,可以对倒影图像进行模糊滤波,例如高斯模糊。 3. **透明度叠加**:设置倒影图像的透明度,根据水面...

Global site tag (gtag.js) - Google Analytics