English 中文(简体)
有没有一种方法可以从指定的网站上找到特定颜色的图像?
原标题:Is there a way to find images of a certain color from specified sites?

首先,我不是指谷歌图片搜索!

我想让用户能够选择一个十六进制颜色值,然后通过程序搜索(从指定的网站/目录在线)图像,其中主色是他们指定的颜色(或接近它的颜色)。

有技术可以做到这一点吗?我更喜欢PHP/MMySQL,但如果更简单的话,我愿意使用其他语言。


编辑

我采纳了一些建议,找到了以下内容:http://www.coolphptools.com/color_extract它在从图像中提取最常见的颜色方面做得很好。

下一步是计算从提取的颜色到要搜索的颜色的距离。我实施它没有问题,只是我不清楚计算颜色距离的最佳方法

我在这个网站上搜索过,也在谷歌上搜索过具体的答案,但都没有找到。上面的工具将颜色提取为十六进制颜色代码。我目前正在将其转换为RGB并使用这些。

我应该尝试将RGB转换为Y UV吗?我正在尝试使用:

sqrt(((r-r1)*.299)^2+((g-g1)*.587)^2+((b-b1)*.114)^2)

(基于此处的答案:RGB与最接近的预定义颜色

它不是很准确我应该用什么来交换颜色距离公式,以便它计算准确的颜色距离(到人眼)

问题回答

Interesting. The first problem is: "What is the dominant colour of an image?" Maybe the one most pixels have. What do you do with similar shades of the same colour? Would you cluster around similar colours?

I would implement it this way: Grab all images inside your search paths. Cluster the colors used in each of them and the biggest cluster is the dominant color. You will have to play around a bit with cluster sizes and number of clusters. If this color is within a certain range of hue, saturation and brightness of your searched color it is a match.

首先,我想知道你如何在网站/目录上爬行以搜索特定的图像颜色,除非你有一个大的网站列表。如果它与你的问题无关,那就忽略它。

回到你的问题,我个人认为这也是一个有趣的问题。由于这需要大量的研究,我只想指出一些想法供大家参考。

您需要做的是获得用户指定的十六进制颜色,并将其转换为RGB颜色,因为我所知道的PHP中的大多数图像函数只能使用RGB。现在,如果你有一个可以搜索的目录列表,那么只需浏览它们,并使用一些基本功能来获取所需的网页内容(例如file_get_contents,或cURL)。一旦您有了特定页面的内容,您将需要使用DOM函数从该页面获取图像URL(您可以自己计算,使用:getElementsByTagName()getAttribute())。现在假设您持有一个图像URL列表,现在您需要获取它们的颜色,并尝试将它们与用户指定的颜色匹配(记住将所有内容转换为RGB)。

在PHP中,我们有一个非常使用图像的方便的GD库。如果您的服务器支持GD2,那么您可以查看imagecolorclosest()。此函数”返回图像调色板中“最接近”指定RGB值的颜色索引“。请注意,此函数只返回最接近的匹配(不完全匹配),因此必须进行一些比较才能选择正确的图像(我相信这很容易,因为你现在有了RGB颜色,可以使用非常方便的值,比如说,使用一些减法和调整方法)。

此外,不仅是图像,当你有一个特定的页面内容时,你可以尝试搜索该页面的配色方案(通过获取其“背景色”值),还有相当多的细节可以获取和处理:)当然,图像的颜色在某种程度上与页面的样式方案颜色有关,从逻辑上来说更广泛。

如果我说的不清楚,请毫不犹豫地评论我的回复:)

快乐的编码。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签