<?xml version="1.0" encoding="utf-8"?>

<rss version="2.0">
 <channel>
	<title>Комментарии в блоге "oracle" на "Определение цвета товара."</title>
	<description>Комментарии в блоге "oracle" на "Определение цвета товара."</description>
	<link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php</link>
	<language>ru</language>
	<docs>http://backend.userland.com/rss2</docs>
	<pubDate>Tue, 10 Mar 2026 01:02:10 +0300</pubDate>

    <item>
      <title>Комментарии на "Определение цвета товара." от Роман Забродин</title>
      <description><![CDATA[Внедрили разработанный Максимом механизм в наше типовое решение Битроник 2 PRO обрастив его пользовательским интерфейсом. Получилось классно! <img src="http://dev.1c-bitrix.ru/upload/main/smiles/3/bx_smile_smile.png" border="0" data-code=":)" data-definition="UHD" alt=":)" style="width:20px;height:20px;" title="С улыбкой" class="bx-smile" /> Подробнее в нашем блоге:<br /><noindex><a href="http://romza.ru/blog/romza/bitronik-2160/" target="_blank" rel="nofollow" >http://romza.ru/blog/romza/bitronik-2160/</a></noindex>]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=80419#com80419</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=80419#com80419</guid>
      <pubDate>Fri, 29 Apr 2016 09:13:41 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Роман Забродин</title>
      <description><![CDATA[Классно! <img src="http://dev.1c-bitrix.ru/upload/main/smiles/3/bx_smile_smile.png" border="0" data-code=":)" data-definition="UHD" alt=":)" style="width:20px;height:20px;" title="С улыбкой" class="bx-smile" />]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68278#com68278</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68278#com68278</guid>
      <pubDate>Tue, 02 Jun 2015 11:26:48 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Максим Смирнов</title>
      <description><![CDATA[Вся статья именно об этом.<br />Цвета не создаются, а выбираются из справочника по степени похожести.]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68277#com68277</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68277#com68277</guid>
      <pubDate>Tue, 02 Jun 2015 11:04:37 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Роман Забродин</title>
      <description><![CDATA[<br />====quote====<br />При сохранении товара вычисляем цвет и записываем его в значение свойства. <br />=============<br />А можно ли сделать так, чтобы новый цвет не создавался каждый раз при добавлении нового товара (зачем нам 50 оттенков серого), а был соотнесен и выбран из уже заданных в цветов в HL-инфоблоке-справочнике (стандартный справочник в вашем eShop) — один из 16/32/64/128/256 (число цветов на усмотрение админа) &nbsp;???]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68240#com68240</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=68240#com68240</guid>
      <pubDate>Mon, 01 Jun 2015 09:21:48 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Максим Смирнов</title>
      <description><![CDATA[<br />====quote====<br />девушка в бюстгальтере<br />=============<br />против этого я бессилен <img src="http://dev.1c-bitrix.ru/upload/main/smiles/3/bx_smile_wink.png" border="0" data-code=";)" data-definition="UHD" alt=";)" style="width:20px;height:20px;" title="Шутливо" class="bx-smile" /><br /><br />====quote====<br /> а на разноцветном?<br />=============<br />а против этого бессилен алгоритм <img src="http://dev.1c-bitrix.ru/upload/main/smiles/3/bx_smile_redface.png" border="0" data-code=":oops:" data-definition="UHD" alt=":oops:" style="width:20px;height:20px;" title="Смущенный" class="bx-smile" /><br /><br />Да и не ставилась цель написать искусственный разум за выходные <img src="http://dev.1c-bitrix.ru/upload/main/smiles/3/bx_smile_biggrin.png" border="0" data-code=":D" data-definition="UHD" alt=":D" style="width:20px;height:20px;" title="Широкая улыбка" class="bx-smile" />]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67933#com67933</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67933#com67933</guid>
      <pubDate>Tue, 19 May 2015 10:47:53 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Максим Смирнов</title>
      <description><![CDATA[Вчера попробовал загрузить другой справочник и расширить класс для работы с ним.<br />Здесь <noindex><a href="http://whoyougle.ru/services/colour/list" target="_blank" rel="nofollow" >http://whoyougle.ru/services/colour/list</a></noindex> взял таблицу цветов.<br />Вставил её в LibreOffice Calc и экспортировал в csv.<br />Завёл инфоблок с четырьмя свойствами (HSV, RGB, CMYK и НЕХ) и загрузил в него данные.<br />Получился справочник на 960 цветов.<br />Для его использования создался такой код:<br /><br />
====code====
<pre>class ColorGuessBasedOnIblock extends ColorGuess
{
&nbsp;&nbsp;&nbsp;public function initColorReference()
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&#62;colorReference = array();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rsData = CIBlockElement::getList(array(), array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"IBLOCK_ID" =&#62; $this-&#62;colorReferenceId,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;), false, false, array("ID", "NAME", "PROPERTY_RGB"));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while($arData = $rsData-&#62;fetch())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($arData&#91;"PROPERTY_RGB_VALUE"&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list($r, $g, $b) = explode(",", $arData&#91;"PROPERTY_RGB_VALUE"&#93;, 3);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&#62;colorReference&#91;$arData&#91;"ID"&#93;&#93; = array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"R" =&#62; $r,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"G" =&#62; $g,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"B" =&#62; $b,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;
&nbsp;&nbsp;&nbsp;}
}

$colorG = new ColorGuessBasedOnIblock(6); // Справочник
$colorG-&#62;handleIblock(1, 97);
 </pre>
=============
Тут в полный рос встала проблема с &quot;разделением&quot; цветов вместо их усреднения.<br />Модель в красном платье &quot;усреднялась&quot; до .... ))<br /><br />Тогда написал очень не оптимальный код, но тут анализируется каждый пиксель изображения отдельно.<br />И затем выбирается цвет встречающийся в большинстве случаев.<br /><br />Эту функцию поместите в класс наследник ColorGuess:<br />
====code====
<pre>&nbsp;&nbsp;&nbsp;public function guessColor()
&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$histogram = array();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($this-&#62;colorReference as $key =&#62; $arData)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$c1 = $this-&#62;rgb2xyz($arData);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$c1 = $this-&#62;xyz2lab($c1);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$c1&#91;"C"&#93; = 0; //счётчик близких цветов.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$histogram&#91;$key&#93; = $c1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cache = array();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$width = imagesx($this-&#62;image);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$height = imagesy($this-&#62;image);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($x = 0; $x &#60; $width; $x++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($y = 0; $y &#60; $height; $y++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$a = imagecolorat($this-&#62;maskImage, $x, $y);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($a == $this-&#62;maskColor)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rgb = imagecolorat($this-&#62;image, $x, $y);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$rgb = $rgb &#38; 0xFFFFFF;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($cache&#91;$rgb&#93;))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$imageColor = array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"R" =&#62; (($rgb &#62;&#62; 16) &#38; 0xFF),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"G" =&#62; (($rgb &#62;&#62; 8) &#38; 0xFF),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"B" =&#62; ($rgb &#38; 0xFF),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$imageColor = $this-&#62;rgb2xyz($imageColor);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$imageColor = $this-&#62;xyz2lab($imageColor);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$distances = array();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($histogram as $key =&#62; $referenceColor)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dL = $imageColor&#91;"L"&#93; - $referenceColor&#91;"L"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dA = $imageColor&#91;"a"&#93; - $referenceColor&#91;"a"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dB = $imageColor&#91;"b"&#93; - $referenceColor&#91;"b"&#93;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$distances&#91;$key&#93; = $dL*$dL + $dA*$dA + $dB*$dB;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asort($distances);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset($distances);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$cache&#91;$rgb&#93; = key($distances);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = $cache&#91;$rgb&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$histogram&#91;$key&#93;&#91;"C"&#93;++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#92;Bitrix&#92;Main&#92;Type&#92;Collection::sortByColumn($histogram, array("C" =&#62; SORT_DESC), '', null, true);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset($histogram);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return key($histogram);
&nbsp;&nbsp;&nbsp;}
 </pre>
=============
Результат потрясающий!<br /><br />PS желающие могут парой строчек сделать множественное угадывание например по персентилю. Из guessColor возвращаем массив наиболее встречающихся цветов, а в modifyResult &quot;сгружаем&quot; их во множественное свойство.]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67932#com67932</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67932#com67932</guid>
      <pubDate>Tue, 19 May 2015 10:44:59 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Максим Хасанов</title>
      <description><![CDATA[Поддержу Алексея. Или если на картинке не вытравка а имиджевая фотка - девушка в бюстгальтере например? Да еще и не на сером фоне, а на разноцветном?]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67930#com67930</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67930#com67930</guid>
      <pubDate>Tue, 19 May 2015 08:04:18 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Алексей Коваленко</title>
      <description><![CDATA[Максим, а как быть в ситуации несколько цветов?<br />Черно-белое, красно-зеленое &nbsp;или более чем два цвета, на которые должен реагировать поиск]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67927#com67927</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67927#com67927</guid>
      <pubDate>Tue, 19 May 2015 05:20:45 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от Максим Смирнов</title>
      <description><![CDATA["=" достаточно.<br />При сохранении товара вычисляем цвет и записываем его в значение свойства.<br />После этого хоть обычный, хоть умный фильтр можно применять уже к этому свойству.]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67924#com67924</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67924#com67924</guid>
      <pubDate>Mon, 18 May 2015 18:16:53 +0300</pubDate>
    </item>

    <item>
      <title>Комментарии на "Определение цвета товара." от ZiXO.ru</title>
      <description><![CDATA[Интересовались этим вопросом. Интересный подход, но какая математика должна быть в SQL запросе (в ORM запросе?), чтобы найти близкие к заданному цвету товары?]]></description>
      <link>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67923#com67923</link>
      <guid>http://dev.1c-bitrix.ru/community/blogs/oracle/autodetect-the-color-of-the-product.php?commentId=67923#com67923</guid>
      <pubDate>Mon, 18 May 2015 17:57:02 +0300</pubDate>
    </item>

  </channel>
</rss>