j2me中一般要用到RMS,如果用RMS存储图片并取出的话,是要转化为byte[]格式的,怎样存入byte[]数据,很简单
,这个例子只是将图片格式转化为byte[]并用之构造图片。
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.*;
import java.io.*;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
public class Try extends MIDlet {
public Try() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
try{
int buffer=1024;//缓存大小
byte[] bufferData=new byte[buffer];
byte[] data=null;
//建立一个输入流,流的来源是一个图片,eclipse中的话,默认是在res文件夹下
InputStream is=this.getClass().getResourceAsStream("1.jpg");
//建立一个字符数组输出流,rms中只支持byte[]格式,这样方便存取RecordStore
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//numReaded标记实际读入的字符数
int numReaded=0;
while(numReaded!=-1){
//InputStream的read方法重写过一次,有不带参数的read()函数,每次只读入一个字符
//这样很慢不适合在j2me这种小内存机器上运行。下面这个read方法是将输入流读入到字符数组
//bufferData中,0是数组 b 中将写入数据的初始偏移量,为0表示每次从数组开头写入数据。
//buffer表示每次最多读入buffer个字符,如果buffer为0则返回0,如果读到流的末尾返回-1
//numReaded即read的返回值就是表示实际读入字符数组的字符数
numReaded=is.read(bufferData, 0, buffer);
if(numReaded!=-1){
//在字符输出流中每次写下刚刚读入到bufferData中的数据,0是数组中的起始偏移量
//numReaded是这次要读入的字符个数
baos.write(bufferData, 0, numReaded);
}
}
//之所以要用ByteArrayOutputStream句是为了下面这句方便将数据生成字符数组
data=baos.toByteArray();
baos.close();
//创建一个Image可以用createImage方法,该方法重写过6次。也可以用
//方法createRGBImage(rgb, width, height, processAlpha)。我现在就用
//createImage(byte[] imageData, int imageOffset, int imageLength)
//和createImage(InputStream arg)这两个方法。
//因为ByteArrayInputStream是InputStream的子类,所以可以直接用。
//方法1.用字符数组
Image img=Image.createImage(data, 0, data.length);
//方法2.用字符输入流
//ByteArrayInputStream bais=new ByteArrayInputStream(data);
//Image img=Image.createImage(bais);
//下面就很简单了,Canvas没有共用的构造函数,所以每次都要自己定义一个他的子类
//并且重写paint函数。
ImageCanvas canvas=new ImageCanvas();
canvas.img=img;
canvas.repaint();
Display dis=Display.getDisplay(this);
dis.setCurrent(canvas);
}
catch(Exception e){
e.printStackTrace();
}
}
class ImageCanvas extends Canvas{
public Image img=null;
public void paint(Graphics g){
if(g!=null&&img!=null){
g.drawImage(img, this.getWidth()/2-img.getWidth()/2, this.getHeight()/2-img.getHeight()/2, 0);
}
}
}
}
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Java 2 Micro Edition(J2ME)平台中的Record Management System(RMS)引擎来创建一个简单的电话本应用。这个应用涵盖了基础的联系人管理功能,包括添加、查询、显示所有联系人、...
通过理解并熟练运用J2ME的API,如RMS、FileConnection和Image类,开发者能够构建出能够处理通信录、文件和图片的PDA应用。"PDAPDemo"项目是学习和实践这些概念的一个好起点,通过对它的研究,可以深入了解J2ME在实际...
在Java 2 Micro Edition (J2ME) 平台上,由于资源有限,高效地处理和压缩图片至关重要。PNG(Portable Network Graphics)格式因其无损压缩和透明度支持而被广泛用于移动设备。本文将深入探讨如何在J2ME中处理和压缩...
3. **RMSMIDlet.java**:此例程深入探讨了RMS,这是J2ME中用于存储数据的本地数据库系统。通过这个例子,开发者可以学习如何创建、读取、更新和删除RMS记录,以及如何管理和优化RMS的存储空间。 4. **SokoCanvas....
RMS是J2ME中的一个记录管理系统,用于在设备上存储和检索数据。它为应用程序提供了一个简单但强大的数据库模型,适合于小规模的数据存储。在本项目中,RMS可能被用来跟踪或记录文件操作的信息,如已删除的文件名或...
5. **数据存储**:J2ME使用Record Management System (RMS)进行本地数据存储。源代码中可能包括RMS的创建、读取、更新和删除操作的实例。 6. **多媒体支持**:J2ME的Media API支持音频和图像处理,使开发者能够在...
- **远程数据存储**:利用Record Management System (RMS)进行数据持久化。 - **统一用户界面**:尽管不同平台的UI有所差异,但仍应尽可能保持一致性和可移植性。 #### J2ME开发工具与SDK - **WTK (Wireless ...
5. RMS持久存储:利用J2ME的Record Management System(RMS)保存游戏进度和记录,即使关闭游戏后也能恢复。 6. 图像动态切分:游戏中的图片可以被动态切割成不同形状和数量的拼图块,增加游戏的多样性。 二、J2ME...
J2ME项目通常包含`src`目录(源代码)、`res`目录(资源)等,而在Android中,这些分别对应于`src`(源代码)、`res/drawable`(图片)、`res/raw`(声音)、`res/values`(字符串)以及`assets`(其他数据文件)。...
J2ME提供了Record Management System (RMS)来实现本地数据存储,开发者可以创建RecordStore来保存和读取数据。 7. **性能优化**:考虑到移动设备的硬件限制,优化代码性能是必不可少的。这包括减少内存占用、优化...
9. **持久化存储**:游戏进度、角色数据等需要保存在本地,学习如何使用 Record Management System (RMS) 或其他方法在 J2ME 中实现数据持久化。 10. **调试与测试**:学会使用 J2ME 的模拟器和实际设备进行调试和...
5. **数据存储**:J2ME支持RMS(Record Management System)进行本地数据存储,源码可能会演示如何创建记录商店、记录和读写数据。 6. **多媒体处理**:如果涉及音频或图像,会使用到` javax.microedition.media`包...
4. **数据持久化**:J2ME提供了Record Management System (RMS) 用于本地数据存储。源代码中可能包含了如何创建、读取、更新和删除RMS记录的例子。 5. **事件处理**:J2ME使用事件驱动模型,事件处理器响应用户的...
应避免创建过多的对象,使用` RMS (Record Management System)`存储数据,以及尽可能减少图片的大小和数量,以减少内存占用。 ### 5. 资源管理 J2ME应用程序通常会打包在JAR文件中,其中可能包含图片、音频等资源...
6. **Chapter 9(ch9):数据存储**:在J2ME中,数据存储通常依赖于Record Management System (RMS),这是一套简单的数据库系统。这一章可能涵盖如何使用RMS存储和检索数据,以及如何处理数据持久化的问题。 7. **...
4. **数据存储**:在J2ME中,可以使用Record Management System (RMS) 存储本地数据,例如地址薄中的联系人信息。RMS允许开发者创建数据库记录并进行读写操作。 5. **事件处理**:通过监听用户输入,如按键点击,来...
Java 2 Micro Edition(J2ME)是Java平台的一个...同时,素材部分可能包含教程、示例图片、音频或视频等,这些都能加深你对J2ME开发的理解。总的来说,这是一个很好的学习资源,可以帮助初学者快速入门并掌握J2ME技术。
- **图像资源管理**:考虑到移动设备的内存限制,合理管理和加载图片资源至关重要。 - **音效与音乐播放**:J2ME提供了一些API来处理音频播放,如MIDI和WavePlayer。 - **网络通信**:如果游戏需要在线功能,可以...
4. **数据管理**:J2ME 提供 Record Management System (RMS) 用于本地数据存储,这是一套简单的键值对存储系统。 5. **网络通信**:如果"泡泡"涉及到网络功能,那么可能使用了 javax.microedition.io.Connector 和...