【问题标题】:Converting String into Bitmap将字符串转换为位图
【发布时间】:2014-08-22 13:25:06
【问题描述】:

我正在尝试将String 转换为Bitmap 对象,然后将其放在ImageView 上。 String 值是从网上下载的,不为空。其实它是一个jpeg文件,我可以通过浏览器下载和打开。

我尝试使用BitmapFactory.decodeByteArray 方法但收到--- SkImageDecoder::Factory returned null 消息。

try{
      byte[] encodeByte = encodedString.getBytes();
      Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
      return bitmap;
    } catch(Exception e){
       e.printStackTrace();
       return null;
 }

encodedString其实是我之前下载的一个字符串:

...
HttpEntity resEntity = response.getEntity();
String encodedString = EntityUtils.toString(resEntity);
...

【问题讨论】:

  • 先尝试使用本地存储的相同字符串
  • @Alex 你的意思是把一个字符串写入文件然后读取它吗?
  • @Alex 我试图将字符串写入内部存储并读取它,但结果是一样的(老实说并不奇怪)..你能澄清一下本地存储的字符串是什么意思吗?
  • 你能举个字符串例子吗?
  • 当您将二进制数据转换为字符串时,它会更改数据(为有效字符,经过编码)。

标签: android string bitmap bytearray


【解决方案1】:

如 cmets 中所述,将二进制数据转换为字符串时,它会更改 EntityUtils.toString(resEntity) 处的数据(为有效字符,经过编码)

感谢@yoah

代码改为

byte[] img = EntityUtils.toByteArray(resEntity);

然后将这个字节数组传入BitmapFactory

Bitmap bitmap = BitmapFactory.decodeByteArray(img, 0, img.length);

图像显示正确。

所以,结论是使用字节数组比使用附属字符串更好。

【讨论】:

    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2023-03-29
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多