`
pandonix
  • 浏览: 401023 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

J2me中任意角度图片旋转(二)

    博客分类:
  • J2ME
阅读更多

  J2me中任意角度图片旋转

  

作者:pandonix

日期:2007920

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

原文地址:

http://pandonix.iteye.com/

 

本文主要讨论在J2me中如何实现任意角度的图片旋转。其实,早在几年前,minisoyouBB就已经给出了实现算法,相信做j2me游戏开发的朋友们也都收藏过该算法。本文从图像旋转的基本理论出发,详细讨论如何使用实现和优化该算法,希望对旋转算法感兴趣的朋友有帮助。

算法实现排除了像素操作的障碍以后,就可以来实现旋转算法了。首先,考虑使用小数来实现该算法。接下来需要考虑的问题是,旋转后的图片的尺寸该设定为多大,因为其直接影响到旋转后的像素数组的大小。不考虑存储空间的情况下,可以如此定义尺寸:原图片矩形的外接圆的外切矩形,就是旋转后图片所在的矩形,如图所示。虽然,这样定义比较浪费空间,但是,原图片沿任意角度选择后的像素数组都可以被覆盖到。定义好尺寸之后,最基本的旋转算法就容易了,算法步骤如下:1、计算旋转后图片尺寸,并定义好旋转后像素数组newPixels[]2、将newPixels的各数组元素初始化为透明,即:0x03、按从左到右,从上到下的顺序,遍历原图片数组,计算出每个像素点旋转后的坐标,并将其复制到newPixels

算法代码如下:

java 代码
  1. public static int[] rotate2(int[] _pixels,int _width,int _height,double _angle)   
  2. {   
  3.     int i,j;   
  4.     double radius = Math.sqrt(_width*_width + _height*_height);   
  5.     int r = (int)radius;   
  6.     int[] newPixels = new int[r*r];   
  7.     for(i = 0; i < newPixels.length;i++)   
  8.     {   
  9.             newPixels[i] = (TRANSPARENT)<<24;   
  10.     }   
  11.     double x1,y1;   
  12.     int x2,y2;   
  13.     double cos = Math.cos(_angle);   
  14.     double sin = Math.sin(_angle);   
  15.     for(i = 0; i < _height;i++)   
  16.     {   
  17.         for(j = 0;j < _width;j++)   
  18.         {   
  19.             x1 = j + (- _width)/2;   
  20.             y1 = i + (- _height)/2;   
  21.             x2 = (int)(x1*cos - y1*sin);   
  22.             y2 = (int)(x1*sin + y1*cos);   
  23.             x2 += r/2;   
  24.             y2 += r/2;   
  25.             newPixels[y2*r+x2] = _pixels[i*_width+j];   
  26.         }   
  27.     }   
  28.     return newPixels;   
  29. }   

 

实现后的效果如图所示,基本上实现了旋转。但遗憾的是,旋转后的图像明显存在“坏点”,在图像中,有很多像素点没有被映射到,所以没有像素值,造成了该点仍然是透明的。而且,图片的失真程度不能接受。

  • 描述: 初步实现效果
  • 大小: 430.3 KB
分享到:
评论
1 楼 纯情小火鸡 2008-03-27  
  我最近做的一个任务是用GWT做的,这个是面向JAVA的开发AJAX的框架,现在就是我有一系列不同角度的图片,要做出来让他有个旋转的效果,就是我鼠标把当前图向右转下,就会显示向右的角度的图片,再继续用鼠标操作让他继续能够旋转,看上去有个旋转的效果,实际上每当鼠标操作了一下是加载了不同方向的图片对吧,

相关推荐

    J2me中任意角度图片旋转

    总之,J2ME中实现任意角度图片旋转涉及到像素操作、旋转计算、尺寸计算、性能优化等多个方面。通过理解基本的旋转原理和J2ME提供的图形API,我们可以有效地处理这些问题,实现高效且精确的图片旋转功能。

    J2ME任意角旋转图片研究

    在J2ME中实现任意角度图片旋转是一项技术挑战,涉及到图像处理、数学计算以及设备兼容性等多个方面。本文主要探讨如何在J2ME环境中解决这些问题,以实现高效、准确的图片旋转。 首先,我们需要理解基本的图像旋转...

    图片分类 J2ME中的图片处理

    【标题】:“图片分类 J2ME中的图片处理” 【描述】:“图片的特点及分类;png图片的格式分析;图片在J2me中的应用。” 【标签】:“图片处理” “J2ME” “png” 在Java的移动开发领域,J2ME(Java 2 Micro ...

    j2me 图片处理特效

    总的来说,这个资源包涵盖了J2ME中的几个核心概念:图片处理、动态特效、音乐播放以及设备传感器的利用。开发者可以通过学习这些技术,提升其在移动平台上的应用开发能力,创造出更加生动、有趣的用户体验。对于J2ME...

    j2me中星星图片的各种处理

    本文将深入探讨标题“j2me中星星图片的各种处理”所涉及的知识点,包括图片旋转、数组操作以及线程控制与画布Sprite的使用。 首先,我们来关注图片旋转。在J2ME中,可以使用`Graphics`类提供的方法对图片进行旋转。...

    J2ME中文输入Demo

    在J2ME中,开发人员需要处理资源有限的环境,因此,提供中文输入功能是一个挑战,因为这需要在小型设备上实现复杂的字符编码和输入法。 本"J2ME中文输入Demo"旨在为开发者展示如何在J2ME环境中实现基本的中文输入...

    j2me游戏素材(图片合集)

    在J2ME中开发游戏,图像素材是至关重要的组成部分,它们赋予游戏视觉吸引力,使玩家沉浸其中。本压缩包提供了一组J2ME游戏的图片素材,可用于创建或增强J2ME游戏的视觉效果。 这些图片素材(.png格式)包括但不限于...

    J2ME中文教程.pdf

    J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!

    J2ME中文教程,J2ME手机程序开发

    J2ME中的GAME API,是MIDP的一个扩展,特别为游戏开发设计。它提供了高级图形绘制功能,如位图操作、动画处理、声音播放等,使得开发者能创建更具交互性和动态效果的游戏。 ### 学习路径与实践 学习J2ME,首先要...

    j2me中的png图片压缩软件

    标题所提及的“j2me中的png图片压缩软件”就是针对这个问题设计的工具。这种软件的主要功能是将原本较大的PNG图片压缩成更小的尺寸,同时尽可能保持图像质量。这通常是通过减少颜色位深度、优化色彩表、删除不必要的...

    J2ME 中文api以及应用 J2ME 中文api以及应用.rar

    在**J2ME中文API**中,主要包含以下几个核心部分: 1. **CLDC(Connected Limited Device Configuration)**:这是一个轻量级的Java虚拟机,用于资源有限的设备。它定义了运行时环境和基本类库。 2. **MIDP...

    j2me中旋转图形的函数

    本文将深入探讨J2ME中旋转图形的核心知识点,包括使用的基本函数、步骤以及示例代码。 J2ME的图形渲染主要通过`Graphics`类来实现,它提供了一系列的方法用于绘制和操作2D图形。在J2ME中,我们可以使用`translate()...

    J2ME中文版教程 J2ME教程

    4. **MIDP API详解**:MIDP是J2ME中用于创建移动应用的核心API,教程会详细介绍如何使用Canvas、Form、Item等组件进行用户界面设计,以及怎样利用 MIDP的网络功能实现数据通信。 5. **图形与多媒体**:J2ME支持丰富...

    J2ME中文教程

    在J2ME中,RecordStore是用于存储非结构化数据的主要机制。开发者可以创建、读取、更新和删除RecordStore中的记录。此外,FileConnection API允许开发者访问设备的文件系统,进行文件的读写操作。 **游戏开发** ...

    J2ME游戏中的图片处理.rar_J2ME 源码_J2ME游戏_j2me 游戏_j2me 图片

    J2ME游戏开发中使用层的概念,J2ME编程学习,供初学者学习,含源码

    J2ME中png图片处理压缩

    本文将深入探讨如何在J2ME中处理和压缩PNG图片,通过实例代码帮助理解相关技术。 首先,PNG图片格式采用的是基于LZ77的无损压缩算法,这使得图像在压缩后仍能保持原始质量,但文件大小比未压缩的位图小很多。在J2ME...

    j2me 中文api (html)

    在深入探讨J2ME中文API(HTML)的相关知识点前,我们先来了解一下J2ME的基本概念及其在移动设备开发中的重要性。J2ME,即Java 2 Platform, Micro Edition,是Sun Microsystems(现已被Oracle收购)推出的一种适用于...

Global site tag (gtag.js) - Google Analytics