简体   繁体   English

无法解析网址中的图片

[英]Unable to parse image from URL

Ive been getting this error: 我已经收到此错误:

10-16 21:56:30.502: INFO/System.out(361): resolveUri failed on bad bitmap uri: android.graphics.drawable.BitmapDrawable@44f0c0c8 10-16 21:56:30.502:INFO / System.out(361):坏位图uri上的resolveUri失败:android.graphics.drawable.BitmapDrawable@44f0c0c8

While trying to run this code 在尝试运行此代码时

public class deals extends Activity{

private ArrayList<HashMap<String, Drawable>> myBooks;





@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.deal);

myBooks = new ArrayList<HashMap<String,Drawable>>();
HashMap<String, Drawable> hm;


ListView myListView = (ListView) findViewById(R.id.listView1);

Environment.getExternalStorageDirectory().getAbsolutePath();

Drawable drawable3 = LoadImageFromWebOperations("http://www.bitterwallet.com/wp-content/uploads/2010/04/Tesco-Logo-Colour.jpg");

hm = new HashMap<String, Drawable>();
hm.put("Company", null);
hm.put("Offer", null);
hm.put("IMG", LoadImageFromWebOperations("http://2.bp.blogspot.com/_mCJwxGhlcQQ/TJxEHIOTpnI/AAAAAAAACqA/D11qqbNam80/s1600/TESCO+logo.jpg"));
myBooks.add(hm);

SimpleAdapter adapter = new SimpleAdapter(this, myBooks, R.layout.listview,  new String[]{"company","offer","IMG"}, new int[]{R.id.text1, R.id.text2, R.id.img});


myListView.setAdapter(adapter);


try {
    JSONArray jsonArray = new JSONArray(readTwitterFeed());
    int length = jsonArray.length();
      List<String> listContents = new ArrayList<String>(length);
     for (int i = 0; i < length; i++)
      {
//        listContents.add(jsonArray.getString(i));
         System.out.println(jsonArray.getString(i));

      }


 //     myListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContents));


} catch (Exception e) {
    e.printStackTrace();
}

}

 public String readTwitterFeed() {

        StringBuilder builder = new StringBuilder();
        System.out.println("here");
        HttpClient client = new DefaultHttpClient();
        //HttpGet httpGet = new HttpGet(
            //  "http://www.hotels-in-london-hotels.com/mytrolly/service.php?request={\"mode\":\"category\"}");
        String url = "";
        try {
            //url = "http://hotels-in-london-hotels.com/mytrolly/service.php?request={\"mode\":\"search\",\"category\":\"2\",\"seller\":\"0\",\"page\":\"1\"}";
            url = "http://www.hotels-in-london-hotels.com/mytrolly/serviceSeller.php";





            System.out.println(url);
            String encodedurl = URLEncoder.encode(url,"UTF-8");
            Log.d("TEST", encodedurl);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } 


        HttpGet httpGet = new HttpGet(url);

        System.out.println("here");
        try {
            HttpResponse response = client.execute(httpGet);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode == 200) {
                HttpEntity entity = response.getEntity();
                InputStream content = entity.getContent();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(content));
                String line;
                while ((line = reader.readLine()) != null) {
                    builder.append(line);
                }
            } else {
                //Log.e(ParseJSON.class.toString(), "Failed to download file");
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
            System.out.println("here is the error" + e.toString());
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("here is the error" + e.toString());
        }
        return builder.toString();
    }

 private Drawable LoadImageFromWebOperations(String url)
   {
                try
                {
                        InputStream is = (InputStream) new URL(url).getContent();
                        Drawable d = Drawable.createFromStream(is, "src name");
                        return d;
                }catch (Exception e) {
                        System.out.println("Exc="+e);
                        return null;
                }
        }
}

I've tried doing something similar to this lad: 我已经尝试过做与此小伙子类似的事情:

"resolveUri failed on bad bitmap uri" when putting image on ListView 将图像放在ListView上时,“ resolveUri在错误的位图uri上失败”

But I got a null pointer exception. 但是我有一个空指针异常。 Does anyone know how to get around this issue? 有谁知道如何解决这个问题?

I am use given below code for fetching image for url try it i hope got your answer. 我使用下面给出的代码来获取图像的URL尝试我希望得到你的答案。

static Bitmap bmp;
private static File cacheDir;
static Bitmap bitmap = null;
static HttpURLConnection conn;

private static InputStream fetch(String urlString)
        throws MalformedURLException, IOException {

    conn = (HttpURLConnection) (new URL(urlString)).openConnection();
    conn.setDoInput(true);
    conn.connect();
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(urlString);
    HttpResponse response = httpClient.execute(request);
    return conn.getInputStream();
}

Resources res;

// ***********New Function For Fatching
public static Drawable LoadImage(String URL) {
    Drawable drawable = null;
    Bitmap bm = null;
    try {
        if (fetch(URL) != null) {
            try {
                BitmapFactory.Options options = null;
                // options.inSampleSize=4;
                InputStream obj = (InputStream) fetch(URL);
                bm = BitmapFactory.decodeStream(obj, null, null);
                obj.close();
                conn.disconnect();
            } catch (OutOfMemoryError e) {
            } catch (IndexOutOfBoundsException e) {
            }
            drawable = new BitmapDrawable(bm);
            return drawable;
        } else {

            return null;
        }

    } catch (Exception e) {
        Log.e("GUIMethodClasas", "fetchDrawable failed", e);
        return null;

    }

}

Try this code: 试试这个代码:

URL url = new URL(yourImageURL);
HttpUrlConnection conn = (HttpUrlConnection)url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap b = BitmapFactory.decodeStream(is);
yourImageViewObject.setImageBitmap(b);

Hope this will help you! Happy Coding

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM