glide 和 picasso 无法通过 url 加载图片
glide and picasso cannot load a picture by url
我有一个link
https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224
我要下载这张图片,Glide和Picasso都帮不了我。他们都 return 错误。我如何使用它们的示例
Glide.with(Objects.requireNonNull(getContext()))
.load(movieDetails.getImage())
.fitCenter()
.placeholder(R.drawable.wait_button)
.error(R.drawable.error_download)
.into(image);
Picasso.get()
.load(movieDetails.getImage())
.fit()
.placeholder(R.drawable.wait_button)
.error(R.drawable.error_download)
.into(image);
image - 是我的目标 ImageView
我做错了什么?或者问题出在 url?
我如何下载 Glide 或 Picasso 的这张照片?
我的项目中还有另一种类型的 url,它们都以 ....jpg 结尾,一切正常
这是您应该尝试的 link
Godfather
而不是
https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224
Glide.with(mContext)
.load("https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224.jpg")
.apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter())
.into(image);
url是不是要下载图片。此 https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224 不是有效的海报图片 url。
相反,您需要解析 html 并获取所需的图像 url。
在 html 中有以下内容,url 在元标记中
<meta itemprop="image" content="https://m.media-amazon.com/images/M/MV5BM2MyNjYxNmUtYTAwNi00MTYxLWJmNWYtYzZlODY3ZTk3OTFlXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_QL50_SY500_CR0,0,352,500_AL_.jpg">
对于 url,前提是您可以通过使用 jsoup 解析器解析 html 来解析并获取 link。
将以下内容添加到您的应用 build.gradle 文件
implementation group: 'org.jsoup', name: 'jsoup', version: '1.12.1'
使用 asynctask doInBackground
Document document = Jsoup.connect("https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224");
Element meta = document.select("meta[itemprop=image]").first()
String image_url = meta.attr("content")
在onPostEecute
Glide.with(context).load(url) // url is the one returned in doInbackground
.override(100, 200) // provide some width and height. glide will automatically scale the image down appropriately
.into(image);
注意:我想可以从 imdb api 获取海报图像,但我认为它是付费许可图像。不确定合法性。
同样可以解析html下的其他标签,得到需要的信息
我还检查了不同的 url,例如 https://www.imdb.com/title/tt0068647/mediaviewer/rm2109407488 meta 有图像 url。所以这也可以用于其他 urls。
我有一个link
https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224
我要下载这张图片,Glide和Picasso都帮不了我。他们都 return 错误。我如何使用它们的示例
Glide.with(Objects.requireNonNull(getContext()))
.load(movieDetails.getImage())
.fitCenter()
.placeholder(R.drawable.wait_button)
.error(R.drawable.error_download)
.into(image);
Picasso.get()
.load(movieDetails.getImage())
.fit()
.placeholder(R.drawable.wait_button)
.error(R.drawable.error_download)
.into(image);
image - 是我的目标 ImageView
我做错了什么?或者问题出在 url?
我如何下载 Glide 或 Picasso 的这张照片?
我的项目中还有另一种类型的 url,它们都以 ....jpg 结尾,一切正常
这是您应该尝试的 link Godfather 而不是
https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224
Glide.with(mContext)
.load("https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224.jpg")
.apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter())
.into(image);
url是不是要下载图片。此 https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224 不是有效的海报图片 url。
相反,您需要解析 html 并获取所需的图像 url。
在 html 中有以下内容,url 在元标记中
<meta itemprop="image" content="https://m.media-amazon.com/images/M/MV5BM2MyNjYxNmUtYTAwNi00MTYxLWJmNWYtYzZlODY3ZTk3OTFlXkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_QL50_SY500_CR0,0,352,500_AL_.jpg">
对于 url,前提是您可以通过使用 jsoup 解析器解析 html 来解析并获取 link。
将以下内容添加到您的应用 build.gradle 文件
implementation group: 'org.jsoup', name: 'jsoup', version: '1.12.1'
使用 asynctask doInBackground
Document document = Jsoup.connect("https://www.imdb.com/title/tt0068646/mediaviewer/rm746868224");
Element meta = document.select("meta[itemprop=image]").first()
String image_url = meta.attr("content")
在onPostEecute
Glide.with(context).load(url) // url is the one returned in doInbackground
.override(100, 200) // provide some width and height. glide will automatically scale the image down appropriately
.into(image);
注意:我想可以从 imdb api 获取海报图像,但我认为它是付费许可图像。不确定合法性。
同样可以解析html下的其他标签,得到需要的信息
我还检查了不同的 url,例如 https://www.imdb.com/title/tt0068647/mediaviewer/rm2109407488 meta 有图像 url。所以这也可以用于其他 urls。