Java:从 UTF8 字符串创建可绘制对象

发布于 2024-11-29 09:26:09 字数 2545 浏览 1 评论 0原文

我有以下代码:

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:信息/EOH(10244):PNG

08-12 11:33:52.223: 信息/EOH(10244): 08-12 11:33:52.223: 信息/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ÇàÕ Aî#$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ìŹm³ß}§êªYXiêwq;�� ä 08-12 11:33:52.223:信息/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:信息/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:信息/EOH(10244): IY\¤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ÙÇíÎ:��3Ø·U÷Çä^ôÇ5Ðö49ÉâtAjee Õcj��WiWèlXLy)ïÛk.µøÅÀlrNÓu'Éù¸ë.z??öüN¸MÖä�EE,^��ÅW½�¥ZkóßRßwçÛÆå ��J£U¶ÊT£®ëÊ��°9ü4´*NóË 5¶uM;3Rò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”的字符串转换为可绘制对象。问题是,图像始终是空白的!

有谁知道我可以解决这个问题吗?

预先非常感谢,


编辑:

这也不起作用;(

@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);
}

I have the following code:

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);
}

Here is the response string I'm getting (from 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`

As you can see, I'm trying to convert a String called 'response' to a Drawable object. Trouble is, the image is always blank!

Does anyone know of any way I might be able to fix this?

Many thanks in advance,


Edit:

This didn't work either ;(

@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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蹲在坟头点根烟 2024-12-06 09:26:09

试试这个:

BitmapDrawable drawable = BitmapFactory.decodeFile(response);

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

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

已编辑

对于在线文件,您可以使用以下命令:

BitmapFactory.decodeStream(is)

Try this:

BitmapDrawable drawable = BitmapFactory.decodeFile(response);

Or you could do the following, if you don't need it to be Drawable.

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

EDITED

For online files, you can use this:

BitmapFactory.decodeStream(is)
﹂绝世的画 2024-12-06 09:26:09

这是我正在使用的完整功能(不起作用......):

private void captchaLoad() {
         AsyncHttpClient myClient = new AsyncHttpClient();
         PersistentCookieStore myCookieStore = new PersistentCookieStore(context);
         myClient.setCookieStore(myCookieStore);
         RequestParams params = new RequestParams();

         myClient.post("http://www.extremetech.com/wp-content/uploads/2011/08/amd-logo-106x59.jpg", params, new AsyncHttpResponseHandler() {
            @Override
            public void onStart() {

            }

            @Override
            public void onSuccess(String response) {
                Log.i("EOH",response);

                ByteArrayInputStream bis = null;
                try {
                    bis = new ByteArrayInputStream(response.getBytes("UTF8"));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Bitmap bm=BitmapFactory.decodeStream(bis);

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

            @Override
            public void onFailure(Throwable e) {

            }
        });
     }

Here's the full function I'm using (doesn't work...):

private void captchaLoad() {
         AsyncHttpClient myClient = new AsyncHttpClient();
         PersistentCookieStore myCookieStore = new PersistentCookieStore(context);
         myClient.setCookieStore(myCookieStore);
         RequestParams params = new RequestParams();

         myClient.post("http://www.extremetech.com/wp-content/uploads/2011/08/amd-logo-106x59.jpg", params, new AsyncHttpResponseHandler() {
            @Override
            public void onStart() {

            }

            @Override
            public void onSuccess(String response) {
                Log.i("EOH",response);

                ByteArrayInputStream bis = null;
                try {
                    bis = new ByteArrayInputStream(response.getBytes("UTF8"));
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                Bitmap bm=BitmapFactory.decodeStream(bis);

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

            @Override
            public void onFailure(Throwable e) {

            }
        });
     }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文