从 YouTube 缩略图抓取调色板
Grabbing color palette from YouTube thumbnail
我正在尝试从 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 从另一个域名获取内容。这就是为什么你得到 CSRF
找到解决方案,但它涉及通过 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';
我正在尝试从 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 从另一个域名获取内容。这就是为什么你得到 CSRF
找到解决方案,但它涉及通过 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';