美好的一天,
我正在尝试使用Jsoup检索图像,但我不确定我应该从网站获得什么。我已经使用以下代码从网站上阅读,并且能够获取图像特定标题及其链接到的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-src
方式存储。我正在研究的特定div
类是:
<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>
所以我正在追踪该网址的实际图片。
我该怎么做?
由于
答案 0 :(得分:1)
看看是否有效: -
String temp = featureImage.getAttribute("style");
String url = temp.substring(temp.indexOf("(")+1,temp.indexOf(")"));
答案 1 :(得分: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以了解如何设置它。我最初尝试使用setImageURI()
方法使用URL设置它,但这是一个错误。有关原因,请参阅here。相反,我使用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
并使用ASyncTask
onPostExecute()
方法更新图片视图:
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();
}
干杯!