【问题标题】:Grabbing color palette from YouTube thumbnail从 YouTube 缩略图中抓取调色板
【发布时间】:2015-08-24 05:19:34
【问题描述】:

我正在尝试从 YouTube 缩略图中获取调色板,以便更好地将 YouTube 视频与整个网站设计融合在一起,我想知道是否有任何方法可以做到这一点?

我尝试过使用 color-thief (https://github.com/lokesh/color-thief) 和这段代码(没有运气):

var img = new Image();
img.onload = function () {
  var colorThief = new ColorThief();
  colorThief.getColor(img);
};
img.crossOrigin = 'Anonymous';
img.src = 'http://img.youtube.com/vi/NuEfvIca0XU/mqdefault.jpg

从这里我得到了这个错误:

Image from origin 'http://img.youtube.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access

有什么方法可以绕过这一点,或者在不从 YouTube 下载缩略图并将其保存在我的服务器上的情况下获取调色板?

【问题讨论】:

    标签: javascript node.js youtube youtube-api color-palette


    【解决方案1】:

    找到了解决方案,但它涉及通过http://cors-anywhere.herokuapp.com/ 传递图片链接

    这给我们留下了:

    var img = new Image();
    img.onload = function () {
      var colorThief = new ColorThief();
      colorThief.getColor(img);
    };
    img.crossOrigin = 'Anonymous';
    img.src = 'http://cors-anywhere.herokuapp.com/http://img.youtube.com/vi/'+id+'/mqdefault.jpg';
    

    【讨论】:

      【解决方案2】:

      最好的想法是在服务器端实现这一点,因为出于安全原因,大多数浏览器会自动禁用通过 javascript 从另一个域名获取内容。这就是为什么你会收到CSRF

      【讨论】:

      • 那么,是否让节点服务器为您所指的每个 YouTube 视频抓取调色板?或者为每个缩略图下载服务器上的缩略图?
      • 我不是nodejs 专家,但我更喜欢这种方式: 1. 从 youtube 下载图像。 2. 定义调色板 3. 将其存储到数据库 4. 删除图像
      • 我想避免这种情况,因为该网站基于充满 YouTube 视频的频道,并且在每次歌曲更改或为每个频道跳过的歌曲时下载图像会增加额外的负载.
      • @KasperRT 让我们等待另一个解决方案!我也对你的问题感兴趣
      猜你喜欢
      • 2017-03-10
      • 2013-09-11
      • 2020-06-26
      • 1970-01-01
      • 2017-02-11
      • 2014-08-05
      • 2012-09-25
      • 2011-06-03
      • 2011-10-09
      相关资源
      最近更新 更多