2

重複の可能性:
URL からの Android 画像ビュー

URL から画像を取得して にロードしようとしていますimageViewが、URL 文字列をエンコードできません。これをエンコードする方法を教えてください。

参照用に使用されているコードと URL を見つけてください。

URL: http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG

コード

String link=URLEncoder.encode(urlStr);                    
bitmap=loadBitmap(link);

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    try {
        InputStream in = new java.net.URL(url).openStream();
        bitmap = BitmapFactory.decodeStream(in);
    } catch (Exception e) {

    }        
    return bitmap;
}
4

5 に答える 5

1

このコードを使用すると、サーバーから画像が取得されます

String URL = "http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG"; 

private InputStream OpenHttpConnection(String urlString) throws IOException {
        InputStream in = null;
        int response = -1;
        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();

        if (!(conn instanceof HttpURLConnection))
            throw new IOException("Not an HTTP connection");

        try {
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect();

            response = httpConn.getResponseCode();
            if (response == HttpURLConnection.HTTP_OK) {
                in = httpConn.getInputStream();
            }
        } catch (Exception ex) {
            throw new IOException("Error connecting");
        }
        return in;
    }

private Bitmap DownloadImage(String URL) {
        Bitmap bitmap = null;
        InputStream in = null;
        try {
            in = OpenHttpConnection(URL);
            bitmap = BitmapFactory.decodeStream(in);

            in.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
            final String msg = e1.getMessage();
            handler.post(new Runnable() {  
                public void run() {  
                    Toast.makeText(getApplicationContext(), "" + msg, Toast.LENGTH_SHORT).show();  
                }  
            });
        }
        return bitmap;
    }
于 2013-01-09T07:27:12.537 に答える
1

参考までに、URLEncoder.encode(String) は廃止されました。

参照: http://developer.android.com/reference/java/net/URLEncoder.html

于 2013-01-09T07:45:46.267 に答える
0

次のようにURLをエンコードできます。

  String URL = "http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG";
  String encodeUrl=URLEncoder.encode(URL, "utf-8");
  private Bitmap DownloadImage(String URL) {
    Bitmap bitmap = null;
    InputStream in = null;
    try {
        in = OpenHttpConnection(URL);
        bitmap = BitmapFactory.decodeStream(in);
        in.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
        final String msg = e1.getMessage();
        handler.post(new Runnable() {  
            public void run() {  
                Toast.makeText(getApplicationContext(), "" + msg, Toast.LENGTH_SHORT).show();  
            }  
        });
    }
    return bitmap;
}
于 2013-01-09T07:34:39.387 に答える
0

URL から画像を表示する方法の例を作成しました。その例を使用して、私にとってはうまくいきます。また、画像のURLを置き換えて確認します。

于 2013-01-09T07:43:16.220 に答える
0

以下のコードを使用して、画像をダウンロードして imageview に表示してください。

public class MainActivity extends Activity {

    ImageView my_img;
    Bitmap mybitmap;
    ProgressDialog pd;

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

        ImageView mImgView1 = (ImageView) findViewById(R.id.mImgView1);

        DownloadImageFromURL mDisImgFromUrl = new DownloadImageFromURL(mImgView1);

        mDisImgFromUrl.execute("http://images.pcmac.org/SiSFiles/Schools/TN/JacksonMadisonCounty/RoseHillMiddle/Uploads/Locations/%7BB690E93E-F7C9-48AF-B72A-BFF944FA6D4A%7D_104_9169.JPG");

    }

    private class DownloadImageFromURL extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();
            pd = new ProgressDialog(MainActivity.this);
            pd.setMessage("Loading...");
            pd.show();
        }

        public DownloadImageFromURL(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
            pd.dismiss();
        }
    }
}
于 2013-01-09T07:35:17.113 に答える