在BlackBerry上显示缩放图像

问题描述:

我的BlackBerry应用程序应从Web服务中获取图像并将图像显示为缩略图。任何人都可以给我一个想法如何实现这一目标?在BlackBerry上显示缩放图像

此代码可以帮助您

 connection = (HttpConnection) Connector.open(fullUrl.toString(), 
      Connector.READ_WRITE, true); 


     InputStream is = hc.openInputStream(); 

     DataInputStream dis = new DataInputStream(is); 
     ByteArrayOutputStream bStrm = new ByteArrayOutputStream(); 

     int ch; 
     while ((ch = dis.read()) != -1) { 
      // System.out.println((char) ch); 
      // msg = msg + (char) ch; 
      bStrm.write(ch); 
     } 
     bb = bStrm.toByteArray(); 

这会产生从你的Web服务URL字节数组。这里bb是字节数组。

有两个类在BB中处理图像。 EncodedImageBitmap,都具有从字节数组生成图像的构造函数。我推荐使用位图,它具有简单的图像重新尺寸能力。

+0

非常感谢...我一定会尝试解决方案 – user469999 2010-12-13 10:36:14

我不完全熟悉BB,但由于没有人回答你的问题,请查看EncodedImage类,并且在那里方法scaleImage32()应该返回缩放版本。

+0

感谢您的回复..我一定会检查出来:) – user469999 2010-12-11 11:11:02

+0

+1和竖起大拇指@petteri的建议 – Prasham 2010-12-11 13:14:25

petteri是正确的使用EncodedImage和scaleImage32()。具体来说,您需要使用createEncodedImage(byte[] data, int offset, int length)以及web服务返回的字节。

请注意,scaleImage32接受'int'参数,但它们是定点数,与更广为人知的浮点数相反。为了得到你想要的定点值,使用该工具方法Fixed32

最后,如果你不需要在BlackBerry应用程序中的原始图像,你会如果Web服务确实缩放具有更好的整体体验。这将减少传输到设备的字节数,并且会减少设备上的计算以缩放图像。 scaleImage32()使用相当基本的算法,因此服务器上的缩放可能会导致质量更高的缩放图像。

+1

只是为了增加迈克尔的回应,如果你不能在服务器上扩展,并且必须在设备上进行扩展,你可以使用5.0 API来使用Bitmap.scaleInto() – 2010-12-12 17:42:55

+0

做更好的质量缩放。非常感谢...我一定会尝试解决方案 – user469999 2010-12-13 04:20:58