我在想是否有可能获得网站的“特色”颜色。例如,TechCrunch将为绿色,ReadWriteWeb将为红色,CNN也为红色,Microsoft为蓝色,PHP为紫色等......
它不一定准确,只是最佳猜测。
我有些想法:
另外,我需要一种消除黑色,灰色和白色的方法。
这可行吗?你还有其他想法吗?
P.S。对不起我的英文
答案 0 :(得分:5)
肯定是可行的。您可以使用wget
工具和一些简单的正则表达式来解析CSS颜色。然后,您可以收集所有这些颜色,并查看最常用的颜色。然而,这并不总是很好地代表网站中实际的主要颜色,因为很多CSS规则中可能会出现多种颜色但不经常使用。
这实际上是你在这里的一个重要项目。
我的方法如下:
<a>
标签或<h1>
标签的颜色(但如果它们是灰色或黑色/白色则不会。)#FFEEEE
与#FFEAEA
相同,因为它们只是略有不同。#FFF
,#FFFFF
,"white"
,rgb(255,255,255)
等。R(120), G(240), B(80)
,则很可能是绿色。然后对所有像素计数并找到主要组件。总而言之,在我看来,你所定义的任务值得一篇论文:)
答案 1 :(得分:2)
好的,这里有一些非常不正统的方法:
使用一些屏幕捕获包[1] [2]将给定的URL呈现为光栅图像(如PNG)。如果您正在寻找平均值,则分析生成的栅格图像对其平均像素进行采样,或者给出将像素分组为“颜色组”的阈值。使用颜色组的平均值或最大值出现(使用哪种方法取决于对您最重要的方法),您可以获得页面中主要颜色的高精度表示。
[1] http://cutycapt.sourceforge.net/ [2] http://weblogs.mozillazine.org/roc/archives/2005/05/rendering_web_p.html
答案 2 :(得分:1)
如何截取屏幕截图并使用GD lib之类的内容提取该图像中的主要颜色?
答案 3 :(得分:1)
依赖关系: Node-canvas(反过来取决于Cairo),Webshot(取决于Phantomjs),{{3} ,单个包页面上列出的次要依赖项。
Webshot是无头Webkit Phantomjs的轻量级包装 您可以使用它截取您的网页的屏幕截图并将其存储在流中,示例代码位于Color-thief下方。
var webshot = require('webshot');
var fs = require('fs');
webshot('google.com', function(err, renderStream) {
var file = fs.createWriteStream('google.png', {encoding: 'binary'});
renderStream.on('data', function(data) {
file.write(data.toString('binary'), 'binary');
});
});
然后,您可以继续将图像传递给Color-thief,它会为您提取所需的数据from the project Github。