1

こんにちは私は画像の読み込みに画像の読み込みを使用しています。しかし、私の画像はロードされません。私はそれに取り組んで、次のような1つのデモプログラムを開発します。

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

    new DownloadImageTask((ImageView) findViewById(R.id.my_image))
            .execute("http://www.morroccomethod.com/components/com_virtuemart/shop_image/category/resized/Raw_Conditioner_500835f701532_175x175.jpg");
}

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

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

    public DownloadImageTask(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();

    }
}

それは動作しません。しかし、その時に画像のURLを変更すると、画像は正常に読み込まれます。私の質問は、この特定のURLが私のAndroidアプリケーションにロードされていないということです。これを見つけるのを手伝ってください。私はこれに1日を費やします。前もって感謝します。

-Hardik

4

3 に答える 3

2

以下を使用して、エンドポイントから画像を取得します

URL url = new URL(imageUrl);
InputStream content = (InputStream)url.getContent();
Drawable image = Drawable.createFromStream(content , "src");    

おそらくあなたはこれを適応させることができます


サンプルをダウンロードして URL を確認しました - 問題は HTTP => HTTPS リダイレクトにあるようです (サンプルで変更する必要があると述べました - ロードしようとしたときにブラウザが強制的に https に切り替えられたことにも気付きました)提供された文字列からの画像)。サンプルはそれを正しく処理していないように見えますが、ImageLoader.getBitmap をこれに変更すると処理されます

private Bitmap getBitmap(String url) 
{
    File f=fileCache.getFile(url);

    //from SD cache
    Bitmap b = decodeFile(f);
    if(b!=null)
        return b;

    //from web
    try {
        Bitmap bitmap=null;

        HttpURLConnection conn;
        URL imageUrl = new URL(url);
        int rc = -1;
        do {
            conn = (HttpURLConnection)imageUrl.openConnection();
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(true);
            rc = conn.getResponseCode();
            imageUrl = conn.getURL();
        } while (rc == -1); // hmmm - perhaps a http => https

        InputStream is=conn.getInputStream();
        OutputStream os = new FileOutputStream(f);
        Utils.CopyStream(is, os);
        os.close();
        bitmap = decodeFile(f);
        return bitmap;
    } catch (Exception ex){
       ex.printStackTrace();
       return null;
    }
}
于 2012-08-20T05:16:33.420 に答える
1

2日間過ごした後、私はついにここに来て、自分の質問に答えました。主な問題はファイル名です。ファイル名とファイルの場所を変更すると、問題は解決しました。アイデアをくれたすべてに感謝します。

また、http:// を https:// に変更していることもわかりました。

于 2012-08-20T09:30:08.777 に答える
1
public String loadImageFromWebOperations(String url, String path) {
    try {
        is = (InputStream) new URL(url).getContent();
        System.out.println(path);
        File f = new File(path);
        f.createNewFile();
        FileOutputStream fos = new FileOutputStream(f);
        try {
            byte[] b = new byte[100];
            int l = 0;
            while ((l = is.read(b)) != -1)
            fos.write(b, 0, l);
        } catch (Exception e) {
            Log.e("Error in creating file", "", e);
        }
        Log.e("created file path is :", "" + f.getAbsolutePath());
        return f.getAbsolutePath();
    } catch (Exception e) {
        System.out.println("Exc=" + e);
        return null;
    }
}

If any issue let me know...
于 2012-08-17T09:46:21.400 に答える