【问题标题】:Display static Google Map image in BlackBerry 5.0在 BlackBerry 5.0 中显示静态谷歌地图图像
【发布时间】:2011-01-23 18:01:20
【问题描述】:

我有一个非常有趣的问题要解决:

我正在获取一个静态的谷歌地图图片,其 URL 类似于 this

我尝试了几种方法来获取此信息: 将“远程资源”作为 ByteArrayOutputStream 获取,将图像存储在模拟器的 SD 中,依此类推……但每次 freaking 时我都会收到 IlegalArgumentException

我总是得到一个 200 http 响应和正确的 MIME 类型(“image/png”),但无论哪种方式:获取图像并将其转换为位图,或将图像存储在 SD 中并稍后读取;我得到相同的结果...文件总是损坏。

我真的相信它是一个编码问题,或者阅读方法(类似于这个):

public static Bitmap downloadImage(InputStream inStream){
  byte[] buffer = new byte[256];
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  while (inStream.read(buffer) != -1){
    baos.write(buffer);
  }
  baos.flush();
  baos.close();

  byte[] imageData = baos.toByteArray();
  Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, imageData.length, 1);
  //Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, -1, 1);
  return bi;
}

唯一想到的是 imageData.lenght (在响应中,内容长度为: 6005 ),但我真的无法弄清楚这一点。 任何帮助都非常受欢迎......

【问题讨论】:

  • 您能否提供完整的工作代码。因为我也在尝试这样做。

标签: image google-maps blackberry png httpconnection


【解决方案1】:

试试这个方法:

InputStream input = httpConn.openInputStream();
byte[] xmlBytes = new byte[256];
int len = 0;
int size = 0;
StringBuffer raw = new StringBuffer();
while (-1 != (len = input.read(xmlBytes))) 
{
    raw.append(new String(xmlBytes, 0, len));
    size += len;
}
value = raw.toString();
byte[] dataArray = value.getBytes(); 
EncodedImage bitmap;
bitmap = EncodedImage.createEncodedImage(dataArray, 0,dataArray.length);
final Bitmap googleImage = bitmap.getBitmap();

【讨论】:

    【解决方案2】:

    斯瓦蒂的回答很好。同样的事情可以用更少的代码行来完成:

    InputStream input = httpConn.openInputStream();
    byte[] dataArray = net.rim.device.api.io.IOUtilities.streamToBytes(input);
    Bitmap googleImage = Bitmap.createBitmapFromBytes(dataArray, 0, -1, 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多