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。