Java:从 UTF8 字符串创建 Drawable

标签 java android image drawable

我有以下代码:

public void onSuccess(String response) {
    Log.i("EOH",response);
    Drawable d = null;
    Object content=response.getBytes();
    InputStream is = (InputStream)content;
    d = Drawable.createFromStream(is, "src");

    ImageView captcha = (ImageView)findViewById(R.id.imageView2);
    captcha.setImageDrawable(d);
}

这是我得到的响应字符串(来自 LogCat):

08-12 11:33:52.223: INFO/EOH(10244): PNG

08-12 11:33:52.223: INFO/EOH(10244): 08-12 11:33:52.223: INFO/EOH(10244): ������ IHDR������d������2������%Wéé����IDAThíéSgÇÏÙM²\R 08-12 11:33:52.223: INFO/EOH(10244): *h=¨xß-¥:Ni}Ñ?ª¯:}¡S+µ3ötÇàÕ Äî#$a7ÙÝd¾H'
£²$8ÝÏ«äÙßîóï{��¦,²Ê2)Ë��¦,²Ê2)Ë��¦,²Ê2)Ë��¦,²@¬dg¡ä<¯ð°BsìJvVHÖpüõ­Ðí°I·xH÷1×ÁJkÅâbQ§3PÅKãôÊp)¬¬{áö°¡0ªÄR¬>MÎý0uýËâ/|ÖÊÌÊöðèCUW��l»cëaç~­¸ÈIVRKþ>wKÑgX]góY¼¢
12³²Å{zB\o«&0��t]oìŹ¢³ß}§êªYXiêwq;�� ä 08-12 11:33:52.223: INFO/EOH(10244): I.}#Bh+»¹=ÒNF3Ø}��-ÞSíëAá¯N]*ô5q·¿^¾0þÅÝW.sÌ$§åÍJ.¦^ïtl;P¸@¸tãOèPr~D 08-12 11:33:52.223: INFO/EOH(10244): fÝÆFÄ ?¸1û��¬¡KÓdMÔÈ)��pìaç~��_Ø@lðU|¸ïkâ²g·\³ .©¤+�� .[kóÙqû¥Ò#Îç¼g2G¥ñË?^j½:}=(cÎCé«d!ÔóÉpºqLPrÞШÎxiÔHòE¾© H#}ÂÀ{ ��tDHýQcÁö¬J¯ÅÝÀÔ¤TY��uÖ*,H_EÕ3µÝ|ïÉkM#Q}Â_��¤Ê©%¦¤·Ê��,Áä>Á4yµÁ^}3ô×PÜ/©RLwDáov]\IaÔIϧ��Ðy|7ÜÖÅ÷4q®#ÎsШ<~+t;óF¡Ô%¦¤ ÄtÐiÆ>ä$9;nÏq¦øùóçs}Âç¡ä,GtFGènWj½rºlXôóªð½&3qofê 08-12 11:33:52.223: INFO/EOH(10244): IÎY\¤s[6¯klÕÖr�� qºÊê{*ôÀNǶ­lâ¨I®!¬© %ÃÝ|/ðþÙýèáÙÃèßq¤*brPýK=S��wÂmAiÔE:wséKϧXÖ-"����GxV;B¨ÙtÚÓÜâ=UJ¤¢½*c{±ä��dM+KQ9UFcô¨<~yòZ*G~6¥UÖJ;n©q��øÌu4SA7ßFRp£½ÆMºl¸5©+CqP£0ª.{Ó3_ÅýSÝg­ÈüÒ%¤äÊ@%]qÖÛúôiºöÓô!Ñß'ìá>YÞ4ó#!t°pßËøt¦>/i»ý6{s*1ÓÍ÷f¶üÜs¨tËh×dbÅ ´ 46!OtõÈêî))(��ÓeéÂVJ~EK.{y;î4°u lÝâv¯ÅóMÙ×Sǫ̀4Q¢¢&p®M̬Ä_gî§DlwlÙÇíÎ:��³¬·U÷ÇÄ^ôÇ5Ðö49ÉÂtAjeeÕcj��¾WèlXLy)ïÛk.µøÅÀlrNÓu'Éù¬ë.z¦¶?öüN¸MÖä¬EE,^��ÅW½¬¥Zkó­ßRßwçÛÆå ��J£U¶ÊT£®ëÊ��°9ü4´*NóË 5¶uM;³Ròe|XÑ��è>Õÿ;ßO\JÌ��@[¸CÓµåuºVQÞ_\IÌòªÅ¬VÜj¤qÒA'Ý#úÿüóO×uAO4ʼ²Êñ¨ø¡fÖ{Áe��SLY0eÀe��SLY0eÀe��SLY0eÀe§~)l1+��������IEND®B`

如您所见,我正在尝试将名为“response”的字符串转换为 Drawable 对象。问题是,图像总是空白的!

有人知道我可以用什么方法解决这个问题吗?

非常感谢,


编辑:

这也没有用;(

@Override
public void onSuccess(String response) {
    Log.i("EOH",response);          
    ByteArrayInputStream bis = new ByteArrayInputStream(response.getBytes());
    Bitmap bm=BitmapFactory.decodeStream(bis);

    ImageView imgView = (ImageView)findViewById(R.id.imageView2);
    imgView.setImageBitmap(bm);
}

最佳答案

试试这个:

BitmapDrawable drawable = BitmapFactory.decodeFile(response);

或者如果您不需要它是可绘制的,您可以执行以下操作。

Bitmap bm = BitmapFactory.decodeFile(response);
ImageView captcha = (ImageView)findViewById(R.id.imageView2);
captcha.setImageBitmap(bm);

已编辑

对于在线文件,你可以使用这个:

BitmapFactory.decodeStream(is)

关于Java:从 UTF8 字符串创建 Drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7038886/

相关文章:

java - jdk10 外部jar放在哪里

java - 正则表达式方法

java - 获取两个字符串日期之间的记录

Android : Difference between View. GONE 和 View.INVISIBLE?

image - <p :selectOneButton> with images

javascript - 强制将远程托管的图像下载到浏览器

java - 如何使用 lambda 在对象中打印集合列表

android - 执行 aapt 时出错 : Cannot run program

android - 如何在我的 Android 应用程序中为所有 View 使用 Roboto 字体?

jquery - 通过 jquery 选择 xml 中的特定元素