`
fortianwei
  • 浏览: 60938 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

j2me RMS 图片

    博客分类:
  • J2ME
阅读更多
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);
		 }
	 }
 }
}
分享到:
评论
1 楼 yuhushuan 2010-05-05  
我需要 image 对象 转成字节 存入rms 希望你能帮忙

相关推荐

    自己写的j2me—rms引擎写的电话本

    在本文中,我们将深入探讨如何使用Java 2 Micro Edition(J2ME)平台中的Record Management System(RMS)引擎来创建一个简单的电话本应用。这个应用涵盖了基础的联系人管理功能,包括添加、查询、显示所有联系人、...

    PDA.rar_PDA_j2me_j2me 图片_j2me 文件_j2me 通信

    通过理解并熟练运用J2ME的API,如RMS、FileConnection和Image类,开发者能够构建出能够处理通信录、文件和图片的PDA应用。"PDAPDemo"项目是学习和实践这些概念的一个好起点,通过对它的研究,可以深入了解J2ME在实际...

    J2ME中png图片处理压缩

    在Java 2 Micro Edition (J2ME) 平台上,由于资源有限,高效地处理和压缩图片至关重要。PNG(Portable Network Graphics)格式因其无损压缩和透明度支持而被广泛用于移动设备。本文将深入探讨如何在J2ME中处理和压缩...

    Sun J2ME官方例程若干

    3. **RMSMIDlet.java**:此例程深入探讨了RMS,这是J2ME中用于存储数据的本地数据库系统。通过这个例子,开发者可以学习如何创建、读取、更新和删除RMS记录,以及如何管理和优化RMS的存储空间。 4. **SokoCanvas....

    j2me文件操作程序

    RMS是J2ME中的一个记录管理系统,用于在设备上存储和检索数据。它为应用程序提供了一个简单但强大的数据库模型,适合于小规模的数据存储。在本项目中,RMS可能被用来跟踪或记录文件操作的信息,如已删除的文件名或...

    J2ME大量源代码,例子

    5. **数据存储**:J2ME使用Record Management System (RMS)进行本地数据存储。源代码中可能包括RMS的创建、读取、更新和删除操作的实例。 6. **多媒体支持**:J2ME的Media API支持音频和图像处理,使开发者能够在...

    非常好的关于j2me学习概要

    - **远程数据存储**:利用Record Management System (RMS)进行数据持久化。 - **统一用户界面**:尽管不同平台的UI有所差异,但仍应尽可能保持一致性和可移植性。 #### J2ME开发工具与SDK - **WTK (Wireless ...

    J2ME拼图游戏源代码【内附指导书】

    5. RMS持久存储:利用J2ME的Record Management System(RMS)保存游戏进度和记录,即使关闭游戏后也能恢复。 6. 图像动态切分:游戏中的图片可以被动态切割成不同形状和数量的拼图块,增加游戏的多样性。 二、J2ME...

    J2ME游戏移植到Android手机

    J2ME项目通常包含`src`目录(源代码)、`res`目录(资源)等,而在Android中,这些分别对应于`src`(源代码)、`res/drawable`(图片)、`res/raw`(声音)、`res/values`(字符串)以及`assets`(其他数据文件)。...

    j2me实现手机QQ源代码

    J2ME提供了Record Management System (RMS)来实现本地数据存储,开发者可以创建RecordStore来保存和读取数据。 7. **性能优化**:考虑到移动设备的硬件限制,优化代码性能是必不可少的。这包括减少内存占用、优化...

    J2me 基础学习 rpg游戏开发学习

    9. **持久化存储**:游戏进度、角色数据等需要保存在本地,学习如何使用 Record Management System (RMS) 或其他方法在 J2ME 中实现数据持久化。 10. **调试与测试**:学会使用 J2ME 的模拟器和实际设备进行调试和...

    基于Eclipse环境的J2ME应用程序开发实例源码

    5. **数据存储**:J2ME支持RMS(Record Management System)进行本地数据存储,源码可能会演示如何创建记录商店、记录和读写数据。 6. **多媒体处理**:如果涉及音频或图像,会使用到` javax.microedition.media`包...

    郭克华J2ME移动开发实战教学视频源代码

    4. **数据持久化**:J2ME提供了Record Management System (RMS) 用于本地数据存储。源代码中可能包含了如何创建、读取、更新和删除RMS记录的例子。 5. **事件处理**:J2ME使用事件驱动模型,事件处理器响应用户的...

    j2me 的一些基本类的编写

    应避免创建过多的对象,使用` RMS (Record Management System)`存储数据,以及尽可能减少图片的大小和数量,以减少内存占用。 ### 5. 资源管理 J2ME应用程序通常会打包在JAR文件中,其中可能包含图片、音频等资源...

    j2me手机高级编程

    6. **Chapter 9(ch9):数据存储**:在J2ME中,数据存储通常依赖于Record Management System (RMS),这是一套简单的数据库系统。这一章可能涵盖如何使用RMS存储和检索数据,以及如何处理数据持久化的问题。 7. **...

    J2ME手机地址薄程序

    4. **数据存储**:在J2ME中,可以使用Record Management System (RMS) 存储本地数据,例如地址薄中的联系人信息。RMS允许开发者创建数据库记录并进行读写操作。 5. **事件处理**:通过监听用户输入,如按键点击,来...

    J2ME的素材与源码.rar

    Java 2 Micro Edition(J2ME)是Java平台的一个...同时,素材部分可能包含教程、示例图片、音频或视频等,这些都能加深你对J2ME开发的理解。总的来说,这是一个很好的学习资源,可以帮助初学者快速入门并掌握J2ME技术。

    j2ME游戏入门DOC格式

    - **图像资源管理**:考虑到移动设备的内存限制,合理管理和加载图片资源至关重要。 - **音效与音乐播放**:J2ME提供了一些API来处理音频播放,如MIDI和WavePlayer。 - **网络通信**:如果游戏需要在线功能,可以...

    j2me code 源程序 泡泡

    4. **数据管理**:J2ME 提供 Record Management System (RMS) 用于本地数据存储,这是一套简单的键值对存储系统。 5. **网络通信**:如果"泡泡"涉及到网络功能,那么可能使用了 javax.microedition.io.Connector 和...

Global site tag (gtag.js) - Google Analytics