本文为BlackBerry应用开发专题UI设计的文章,我们将介绍《BlackBerry应用开发指南》——UI设计篇:图片操作,包括:使用未处理(raw)的图像数据和使用编码的图像。
使用未处理(raw)的图像数据
为了从图像的特定区域获取未处理的图像数据,并存储在一个整数数组中,调用Bitmap.getARGB().应用程序然后可以直接对未处理的图像数据进行操作。
(注:getARGB()方法只在彩屏的 BlackBerry 设备适用。)
设备模拟器显示图像数据时每一个象素作为一个整数,每个象素中,每个字符(不透明)有8 个位,红,绿以及蓝的值。颜色由 8 个整数以 0xAARRGGBB 的形式组成。
获取图像数据
初始化一个整型数组,然后调用 Bitmap.getARGB()将新的或预定义的位图的未处理的图像数据存储到整型数组中。
比较 2个图像
调用 Bitmap.equals()决定 2 个位图是否相同。
#p#
使用编码的图像
net.rim.device.api.system.EncodedImage 类封装了各种格式的编码图像。BlackBerry 设备支持下面的图像格式:.gif,.png,.wbmp,以及.jpeg.只有彩屏的 BlackBerry 设备才支持.jpeg 图像。
(注:JPEGEncodedImage 类需要一个不可用的签名。
使用 EncodedImage 的子类,PNGEncodedImage 和 WBMPEncodedImage,来分别访问.png和.wbmp 图像的特定属性。例如,PNGEncodedImage 提供方法来获得图像的色彩深度(BitDepth), alpha 通道(alpha channel① ),以及颜色类型。
在 BlackBerry IDE 中,一个应用程序能够直接访问加到工程或者依赖的类库工程中的图像。
访问一个图像
在 BlackBerry IDE 中,保存一个图像到你的项目文件夹或者子文件夹,然后增加图像到工程中。调用 Class.getResourceAsStream()获取图像作为一个字节的输入流。
解码一个图像
为了编码一个图像,调用 EncodedImage.createEncodedImage()。这个方法使用字节数组里的未处理的图像数据来创建了一个 EncodedImage 的实例。如果作为参数的字节数组布包汉一个可以识别的图像格式,它将抛出一个 IllegalArgumentException 异常。
注:缺省地,BlackBerry 设备软件监测基于图像格式的 MIME 类型的图像。如果正确的 MIME 类型未能自动的监测到,使用下面EncodedImage.createEncodedImage()的形式指定一个特定的 MIME 类型:
- createEncodedImage(byte [] data, createEncodedImage(byte [] data, int offset, int
- length, String mimeType)
如果图像格式预指定的 MIME 类型不匹配,这个方法抛出一个 IllegalArgumentException异常。支持的 MIME 类型包括:image/gif, image/png, image/vnd.wap.wbmp, 以及 image/jpeg.
显示一个编码的图像
调用 BitmapField.setImage()指定一个编码的图像到一个 BitmapField,然后调用 add()将BitmaoField 加入到屏幕中。
设置解码模式
调用 EncodedImage.setDecodeMode()来设置图像的解码模式。提供下面模式之一作为方法的一个参数:
设置缩放因子(scaling factor )
当解码时,为了设置用在缩减一个图像的整数因子,调用 EncodedImage.setScale()。图像通过作为 scale 参数的整型来缩放。例如,如果你设置缩放因子为 2,图像将缩小到原大小的 50%。
代码实例
ImageDemo.java 实例从一个包含在项目中的图像获得未处理的数据,然后使用这个未处理的数据来重新创建一个 EncodedImage。
【编辑推荐】