1

良い一日、

Jsoup を使用して画像を取得しようとしていますが、Web サイトから正確に何を取得すればよいかわかりません。次のコードを使用して Web サイトから読み取り、特定のタイトルの画像とリンク先の URL を取得できましたが、画像は取得できませんでした。

ImageViewこの画像をアクティビティにあるに設定したいと思います。これまでの私のコードは次のとおりです。

        // Get the required stuff from the webpage
        Document document = null;
        try {
            document = Jsoup.connect(URL).get();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Element info = document.select("div.featurebox").first();
        // Caption on image
        docInfo = info.text();
        // URL of image
        imageURL = info.attr("data-url");

        // Retrieve the actual image
        Element featureImage = document.select("div.featurebox-image").first();
        // Unsure what to get here

画像は通常の方法で保存されないことに注意してくださいimg-srcdiv私が見ている特定のクラスはこれです:

<div class="featurebox-image" style="background:url(http://img.mangastream.com/cdn/feature/02.jpg) center center;">
                <div class="featurebox-caption">
                    <strong>History's Strongest Disciple Kenichi <em>544</em></strong> - Witch                    </div>
            </div>

だから私はそのURLから実際の画像を求めています。

どうすればいいですか?

ありがとう

4

3 に答える 3

1

開始を提供してくれた Hardip Patel に感謝します。これが私がしたことです:

  • Hardips コードを使用して、次のように変更しました。

        Element featureImage = document.select("div.featurebox-image")
                .first();
        String temp = featureImage.getElementsByAttribute("style")
                .toString();
        // URL of image
        imageStrg = temp
                .substring(temp.indexOf("(") + 1, temp.indexOf(")"));
    
  • その後、StackOverflow を少し調べて、設定方法を見つけました。最初はメソッドを使ってURLで設定しようとしたのsetImageURI()ですが、エラーになってしまいました。理由はこちらをご覧ください。代わりに、その SoH の回答を使用して、URL からビットマップを作成しました。

    // Method to return a bitmap from an images URL
    private Bitmap getImageBitmap(String url) {
    Bitmap bm = null;
    try {
    
        // See what we are getting
        Log.i(TAG, "" + url);
    
        URL aURL = new URL(url);
        URLConnection conn = aURL.openConnection();
        conn.connect();
    
        InputStream is = conn.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is);
        bm = BitmapFactory.decodeStream(bis);
    
        bis.close();
        is.close();
    } catch (IOException e) {
        Log.e(TAG, "Error getting bitmap", e);
    }
    return bm;
    

    }

  • その後、以前から を設定し、のメソッドBitmapを使用して画像ビューを更新する必要がありました。ASyncTaskonPostExecute()

    imageOne = getImageBitmap(imageStrg);
    
    @Override
    protected void onPostExecute(String result) {
        // Write the result (document title) to the textview
        super.onPostExecute(result);
    
        // Update the textview with results
        if (result == null) {
    
            txtVwDocTitleValue.setText("Nothing to report...");
        } else {
            txtVwDocTitleValue.setText(result);
            txtVwDocURLValue.setText(imageURL);
    
            // Set the views image
            imgVwManga1.setImageBitmap(imageOne);
        }
        // Destroy the progress bar
        stopProgressDialog();
    }
    

乾杯!

于 2013-10-27T15:39:10.887 に答える