在J2ME/MIDP中实现图像旋转

J2ME是标准版java(J2SE)面向手机、PDA等各类移动和嵌入式设备的缩减版本,是一种获得众多厂商的支持和广泛使用的移动设备开发平台。图一展示了J2ME技术的体系结构。它分为三层:虚拟机层,配置层,和简表层。 配置层(Configuration)通过对功能的描述,把千差万别的嵌入式设备进行了功能的说明和分类。它把运算功能有限、内存较小、电力有限的设备,定义在CLDC(有限连接设备配置)规范中,这类设备有PDA 、手机等;把运算能力相对较佳、内存相对较大、电力供应比较充足的设备,定义在CDC(连接设备配置)规范之中,这类设备有电冰箱、机顶盒、车载计算设备等。

虚拟机层(Virtual Machine)基于宿主操作系统,按照某一种配置,实现了Java虚拟机。CDC配置对应的虚拟机叫CVM,CLDC对应的虚拟机叫做KVM。

简表层(Profile)建立在配置层之上,提供了面向用户的更高层次的功能,如用户接口,网络,数据存储等。基础规范(Foundation Profile)和个人规范(Personal Profile)是CDC之上的两个重要的规范,移动信息设备规范(MIDP)和PDA规范(PDAP)是CLDC之上的两个重要的规范。当前,无线应用程序的开发主要是在MIDP之上进行的。

配置层和简表层共同构成了J2ME的运行环境。如CLDC/MIDP架构构筑了手机应用程序的开发和运行环境。本文所实现的图像旋转算法便是基于这种架构的。

图一 J2ME 体系结构 需要注意的是,这些规范也是在不断发展的。如早期很多的设备的计算能力非常有限,CLDC1.0就只支持整型数值。后来数随着设备运算能力的提高,CLDC1.0发展到CLDC1.1,就加如了对浮点运算的支持。对MIDP规范也一样,从1.0发展到2.0,它通过扩充类和接口的功能,加强了对游戏开发的支持,增加了图像处理功能(旋转要用到),增强了对网络功能的支持,如串口、套接字、https等。

2D旋转的数据基础

考虑笛卡儿直角坐标系中单个点旋转的情况。如图二示,这里点P(x,y)到原点O绕O点逆时针旋转角度θ后到点P′(x′,y′)。由三角函数的几何意义,有x = r*cos α ,y = r*si n α和x′ = r*cos(α +θ) , y′ = r*sin(α + θ),推出:

x′ = x * cos θ – y * sin θ

y′ = y * cos θ + x * sin θ

当把旋转点一般化为Q(x0,y0),得到:

x′ = x0 + (x - x0) cos θ - (y - y0) sin θ

y′ = y0 + (y - y0) cos θ + (x - x0) sin θ

在开发时,我们使用设备坐标系,它以屏幕的左上角为坐标原点,y轴方向向下。此时,我们不妨视θ为饶旋转点顺时针旋转的角度,这样,上面的公式依然成立。


图二 2D点的旋转 一般图像的旋转算法

时间: 2024-11-01 06:56:02

在J2ME/MIDP中实现图像旋转的相关文章

图片-图像旋转显示过程中死机

问题描述 图像旋转显示过程中死机 为了实现在图片显示时,保持原有的图片方向,参考了网上博客文章之后,找到了对策 和相应的代码:具体的步骤如下: 1.自动识别图像方向,计算旋转角度: 2.对图像进行旋转并显示 但是在利用bitmap的createbitmap时出现超出内存的问题,原因是因为图片太大,求解决方法 解决方案 你的图像太大了,可以考虑将图片缩小,太大了对于程序处理来说不太现实. 解决方案二: 不太明白,是旋转的动画效果吗?中间的动画效果不需要使用真实的图片吧.

mfc-在MFC中实现交互,拖动鼠标使三维图像旋转的问题

问题描述 在MFC中实现交互,拖动鼠标使三维图像旋转的问题 是我的毕设中的一个目标,之前是实现了MFC的三维数据图像显示,现在导师要我做一个交互,拖动鼠标使图像旋转,不用openGL 目前是使用trackball,通过获取鼠标点击和释放点的坐标得到旋转矩阵,然后对视点进行旋转,实现图像的旋转.可是程序运行的问题是我拖动鼠标,图像没有旋转而是在放大跟缩小,找了两三天都不知道问题出在哪里,求大神指导! 本人c++小白,MFC小白····· 解决方案 求不要沉,求大神指导一下问题可能出在哪里的思路,小

MVC模式在j2me项目中的应用(一)

项目 MVC模式在j2me项目中的应用(一)作者:FavoYang Email:favoyang@yahoo.com 欢迎交流Keywords:MVC j2me UI模式 内容提要:本文简要的介绍了MVC模式的思想,并分析了MVC模式的利弊,最后结合MIDP平台给出几种常见的MVC模式实践.相信此文对任何一个使用midp平台的商务程序开发者都或多或少的有所帮助. 版权声明:本文同时发表在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,如果需要转载,

MVC模式在j2me项目中的应用(二)

项目 MVC模式在j2me项目中的应用(二)作者:FavoYang Email:favoyang@yahoo.com 欢迎交流Keywords:MVC 案例 模式 内容提要:如果想试验一下自己对一个知识到底有几分的掌握,最好的方法就是实践她.结合一个名为"NOTE"的项目(记事本),运用MVC模式进行构建,一起体会一下MVC的强大与灵活.请注意的是,本文中关于不再使用MVC这样的术语,而是使用边界类.控制类.实体类.生命周期类这样的称呼.关于MVC的在j2me上的种种变化请看本文的(一

在J2ME开发中解析XML

目前,XML已经广泛应用于数据交换领域,xml是基于纯文本的,具有优秀的跨平台特性.本文将讲述如何在J2ME中解析XML进行数据传输. XML写法比较简单,而且非常便于人来阅读.但是必须在客户端和服务器端有XML的解析器才可以正常通信,由于初期的移动信息设备内存和处理器上的不足,所以在MIDP1.0中并没有提供对XML的支持.随着内存和处理器的提高,对XML的支持成为了可能.在JSR182中提供了XML的解析器,但是这并不是标准MIDP中的API需要特定的实现才可以支持.幸运的是有第三方的API

保护您的J2ME/MIDP应用程序

XML 数字签名技术可以帮助您为无线 Web 服务应用程序实现轻量级且灵活的安全性解决方案.在本文中,Michael Yuan 讨论了 XML 数字签名及其应用程序的重要性.他还提供了 Bouncy Castle 密码术包的数字签名 API,并提供了在 J2ME/MIDP 无线前端和 JSP 页后端之间的安全 XML 消息传递环境中的示例. 无线 Web 服务中的 Java 技术 基于 Java 的 Web 服务和无线 Java 开发是 JavaOne 2002 的两个最突出的主题.它们代表普及

Linux有问必答——如何在Linux命令行中剪裁图像

Linux有问必答--如何在Linux命令行中剪裁图像 问题:我想要去除图像文件中的白色空白,有没有什么便捷的方法能在Linux命令行中对图像文件进行剪裁? 当涉及到在Linux中转换或编辑图像文件时,ImageMagick毫无疑问是最为熟知的一体化软件之一.它包含了一整套命令行工具,用以显示.转换,或复制超过200中类型的光栅或矢量图像文件,所有这一切都在命令行下完成.ImageMagick可以用于多样化的图像编辑工作,如转换文件格式,添加特殊效果,添加文本,以及改变图像(调整大小.旋转.翻转

图像处理详解之图像旋转

图像旋转的基本思想是通过Matrix类的setRotate方法设置旋转的角度,然后使用Bitmap.createBitmap方法创建一个已经旋转了的图像.除此之外,还可以使用Canvas.setMatrix方法设置,并直接使用drawBitmap绘制. 下面来实现一个旋转动画: 实现方法如下: public class MainActivity extends Activity{ public static int alpha=100; private View myView; @Overrid

C#存取数据库中的图像

一.数据库中的图像存取方法 1. 读取image类型的数据 读取image类型数据的方法可分为以下几步: 1) 先使用无符号字节数组存放数据库对应的数据集中表的image类型字段的值.例如: byte[] bytes= (byte[]) image类型字段值 2) 使用MemoryStream类,该类创建支持存储区为内存的流.即MemoryStream类创建的流以内存而不是磁盘或网络连接作为支持存储区.其构造函数为: public MemoryStream(byte[] buffer); 3)