Blackberry - ListField包含来自文件系统的图像

时间:2010-04-28 10:58:31

标签: image graphics blackberry file-io

我使用以下代码从手机或SDCard中检索图像,然后将该图像用于我的ListField。它提供输出,但生成屏幕需要很长时间。如何解决这个问题呢 ??谁能帮我??在此先感谢!!!

String text = fileholder.getFileName();
try{
 String path="file:///"+fileholder.getPath()+text;
 //path=”file:///SDCard/BlackBerry/pictures/image.bmp”

 InputStream inputStream = null;
 //Get File Connection
 FileConnection fileConnection = (FileConnection) Connector.open(path);

 inputStream = fileConnection.openInputStream();

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 int j = 0;
 while((j=inputStream.read()) != -1) {
 baos.write(j);
 }
 byte data[] = baos.toByteArray();                
 inputStream.close();
 fileConnection.close();  

 //Encode and Resize image 
 EncodedImage  eImage = EncodedImage.createEncodedImage(data,0,data.length);
 int scaleFactorX = Fixed32.div(Fixed32.toFP(eImage.getWidth()), 
      Fixed32.toFP(180));
 int scaleFactorY = Fixed32.div(Fixed32.toFP(eImage.getHeight()), 
      Fixed32.toFP(180));
 eImage=eImage.scaleImage32(scaleFactorX, scaleFactorY);
 Bitmap bitmapImage = eImage.getBitmap();  
 graphics.drawBitmap(0, y+1, 40, 40,bitmapImage, 0, 0);
 graphics.drawText(text, 25, y,0,width);
}
catch(Exception e){}

1 个答案:

答案 0 :(得分:6)

你应该读一次文件(在App开始时或在屏幕打开之前,可能会在那里放一个进度对话框),将图像放在数组中并在绘画中使用这个数组。