【问题标题】:How to get thumbnails from any URL in iOS?如何从 iOS 中的任何 URL 获取缩略图?
【发布时间】:2021-07-03 18:40:19
【问题描述】:

在这两个聊天应用程序中,社交应用程序都有一个功能,当我们在文本视图上粘贴链接时,它会为我们提供该 URL 的缩略图,

这可以在 iOS 应用程序中执行吗?如果是这样,我该怎么做?

【问题讨论】:

  • 你已经尝试了什么?在提出问题之前,您是否尝试过自己寻找这个?
  • 如果您有原始图像,您可以随时创建缩略图; YouTube 基本上通过它的 API 提供小缩略图,所以如果你使用他们的 API,你一定已经看到了。

标签: ios objective-c


【解决方案1】:

我会解析 html 内容并尝试找到指向 .png、jpg 等文件的链接。然后检查分辨率以排除非常小的图像或在 css 中指定为背景的图像。结果,用户将获得一个过滤图像列表,就像您附加的屏幕截图一样。

作为解析器,您可以使用https://github.com/nolanw/HTMLReader

【讨论】:

    【解决方案2】:

    像 Facebook 这样的页面使用来自网页的 OpenGraph 信息来生成链接的缩略图。 OpenGraph 属性描述网页上呈现的对象。 OpenGraph 数据存储在元标记中,如 A.Krasniqi 的回答所示:

    <meta property="og:title" content="The Rock" />
    <meta property="og:type" content="video.movie" />
    <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
    <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
    

    这些元标记的前缀为 og。

    基本的 OpenGraph 属性包括:

    • og:title(对象的标题)
    • og:type(对象的类型,例如 video.movi​​e)
    • og:url(该对象的永久、规范的 URL)
    • og:image(代表页面的图像)

    其他标签包括:

    • og:description(对象的描述)
    • og:视频
    • og:音频

    所有 OpenGraph 参数都记录在案 here

    要解析这些,您可以使用NSXMLParser,但其他人已经实现了 OpenGraph 解析器。 (只需谷歌“iOS OpenGraph 解析器”)

    【讨论】:

      【解决方案3】:

      我终于用 MTDURLPreview on github 做到了

      用法

      #import "MTDURLPreview.h"
      
      [MTDURLPreview loadPreviewWithURL:@"url here" completion:^(MTDURLPreview *preview, NSError *error) {
          NSLog(@"Image URL : %d", [preview.imageURL isEqual:[NSNull null]]);
          NSLog(@"Content : %@", preview.content);
          NSLog(@"Title : %@", preview.title);
      }];
      

      希望您的问题得到解决。

      【讨论】:

        【解决方案4】:

        更新:对于新的 iOS 开发者,您可以使用: https://github.com/itsmeichigo/URLPreview

        使用来自 facebook 的 opengraph,然后解析它

        <meta property="og:title" content="The Rock" />
        <meta property="og:type" content="video.movie" />
        <meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
        <meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />
        

        【讨论】:

          【解决方案5】:

          这是我使用的最佳解决方案,我得到了很好的结果。

          源码:https://github.com/keshiim/WBGLinkPreview

          Cocoapod 名称:pod "WBGLinkPreview"

          我在课堂上使用了如下代码:

          #import <WBGLinkPreview/WBGLinkPreview.h>
          
          @interface ViewController ()
           {
               WBGLinkPreview *urlPreview;
           }
          @end
          
          @implementation ViewController
          
          - (void)viewDidLoad {
          [super viewDidLoad];
          // Do any additional setup after loading the view, typically from a nib.
          urlPreview = [[WBGLinkPreview alloc] init];
          [urlPreview previewWithText:@"https://www.youtube.com/watch?v=HHq_ChsWtb0"
                            onSuccess:^(NSDictionary *result) {
                                NSLog(@"Final Output:: %@", result);
                            } onError:^(WBGPreviewError *error) {
                               NSLog(@"%@", error.description);
                            }];
          }
          

          【讨论】:

            猜你喜欢
            • 2015-09-05
            • 2012-09-25
            • 2020-05-16
            • 1970-01-01
            • 2016-03-20
            • 2010-11-23
            • 2017-11-26
            • 2018-03-25
            • 2017-02-11
            相关资源
            最近更新 更多