gpt4 book ai didi

Android:以编程方式通过 URL 检索网页缩略图

转载 作者:太空狗 更新时间:2023-10-29 15:23:34 26 4
gpt4 key购买 nike

我想以编程方式通过 URL 检索网页缩略图。

做了一些搜索并提出了几个解决方案:

  1. 使用 Swing (JEditorPane) - 但据我所知,如果我错了请纠正我,无法将 swing 与 Android 应用程序一起使用。
  2. 使用带有 API 服务的第三方网站,例如 thumbalizr.com - 最好不要使用它,因为它会给缩略图加水印,除非我付费(我的应用程序是免费的)。
  3. 不知道是否可行,但可以使用 android 浏览器功能吗?也许在 Activity 仅显示进度条时以隐藏方式转到 URL? :)

有人可以提供有用的东西吗?也许是更本土的东西?

欣赏任何方向!

最佳答案

您可以尝试使用 HttpClient 加载网站图标。例如:

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
..........

ArrayList<String> list; //list of target urls

HttpClient httpclient = new DefaultHttpClient();
final int size = list.size();
for (int i = 0; i < size; ++i) {
try {
String pure_url = extractPureUrl(url);
HttpResponse response = httpclient.execute(new HttpGet(pure_url + "/favicon.ico"));

if (response.getEntity() != null) {
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();

byte[] image_bytes = out.toByteArray();
bmp = BitmapFactory.decodeStream(new ByteArrayInputStream(image_bytes));
if (bmp != null) {
//do smth with received bitmap
}
} else {
response.getEntity().consumeContent();
}
}
} catch (ClientProtocolException e) {
//log error
} catch (IOException e) {
//log error
}
}

private static final String EXTENDED_HTTP_PREFIX = "http://www.";
private static final String HTTP_PREFIX = "http://";
/** Converts http://abc.com/xxx and http://www.abc.com/xxx to http://abc.com */
private static String extractPureUrl(String srcUrl) {
String sw = srcUrl.toLowerCase();
String s = sw.startsWith(EXTENDED_HTTP_PREFIX)
? sw.substring(EXTENDED_HTTP_PREFIX.length())
: sw.startsWith(BookmarkInfo.HTTP_PREFIX)
? sw.substring(BookmarkInfo.HTTP_PREFIX.length())
: sw;
int n = s.indexOf('/');
if (n == -1) return srcUrl;
return HTTP_PREFIX + s.substring(0, n);
}

这里有一个潜在的问题 - ico format is not supported officially by Android .实际上,BitmapFactory 在大多数设备上解码 ico 格式没有任何问题。无论如何,我不确定它是否会在所有设备上解码 ico。

关于Android:以编程方式通过 URL 检索网页缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com