Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Плагин wdx который показывает основной цвет картинки
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
cojoc



Joined: 04 Sep 2009
Posts: 144

Post (Separately) Posted: Thu May 16, 2013 02:07    Post subject: Плагин wdx который показывает основной цвет картинки Reply with quote

Предложение о создании плагина, который показывает основной цвет картинки. В интернете есть кое-что из алгоритмов (больше на php), но сам не умею.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Wed May 29, 2013 00:02    Post subject: Reply with quote

Когда баловался конвертером, пытался написать подобный плагин, ибо самому тоже было интересно. Но считать цвета – долгое и муторное дело, особенно для больших картинок.
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Mellomann



Joined: 07 Sep 2009
Posts: 708

Post (Separately) Posted: Wed May 29, 2013 01:03    Post subject: Reply with quote

Уменьшаем картинку до 1х1 по методу Bicubic или Lanczos, смотрим цвет получившегося пикселя, выводим его в поле. Профит! Idea Razz
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed May 29, 2013 10:08    Post subject: Reply with quote

Если забыть о том, что уменьшение картинки, тем более по непростому методу, в разы дольше однократного прохода по массиву пикселей с целью определения среднего или самого популярного цвета.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
ProgMan13



Joined: 19 Aug 2009
Posts: 334

Post (Separately) Posted: Mon Jun 03, 2013 17:32    Post subject: Reply with quote

Показывает цвет в нотации HTML и его процентное отношение (только jpeg, tiff, psd):
http://progman13.totalcmd.net/downloads/wdx_ICCDescription_0.9.zip
Back to top
View user's profile Send private message
cojoc



Joined: 04 Sep 2009
Posts: 144

Post (Separately) Posted: Mon Jun 03, 2013 21:14    Post subject: Reply with quote

ProgMan13 Большое спасибо! Работает хорошо Smile
Вариант с html цветами нравится - много оттенков, правда не очень удобен визуально, можно ли ещё один параметр который будет показывать основной цвет словом, например Красный, Оранжевый, Жёлтый, Коричневый, Зеленый, Голубой, Синий, Фиолетовый, Белый, Чёрный, Серый - сгрести html цвета в группы?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 04, 2013 03:06    Post subject: Reply with quote

ProgMan13
Какой способ выбран - проход или ресэмплирование? Довольно медленно появляется Dominant Color, притом что редактор ресэмплирует (хоть в Hermite, хоть в Lanczos) значительно быстрее.
Поддержку каких форматов ещё реально добавить (PNG, GIF, BMP, ICO, ...)?
Хотелось бы не только HEX, но и прежде всего RGB, HSB/V, а также HSL (HLS/HSI), YUV и YCbCr по усмотрению.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ProgMan13



Joined: 19 Aug 2009
Posts: 334

Post (Separately) Posted: Tue Jun 04, 2013 23:14    Post subject: Reply with quote

cojoc wrote:
можно ли ещё один параметр который будет показывать основной цвет словом

Добавил, но показывает название только для точного значения.

Flasher wrote:
Какой способ выбран - проход или ресэмплирование?

Про ресэмплирование - это же шутка Smile. Нужен же был основной цвет, а не "средний на картинку".
RGB и HSV добавил.
Прямо сейчас, изменив Detect String, можно добавить практически любых форматов. Но стоит помнить, что для мультистраничных (TIFF, ICO) - информация для первой страницы, и альфа-канал на самом деле имеет цвет (PNG, PSD, TGA и т.п.)

http://progman13.totalcmd.net/downloads/wdx_ICCDescription_0.9.1.zip
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Jun 05, 2013 00:09    Post subject: Reply with quote

ProgMan13 wrote:
Нужен же был основной цвет, а не "средний на картинку".
Основной - это наиболее встречаемый, а средний - усреднённый (смешанный)? Тады ой.. А ускорить нельзя?
ProgMan13 wrote:
RGB и HSV добавил.
Гуд.
ProgMan13 wrote:
изменив Detect String
Каким образом?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
cojoc



Joined: 04 Sep 2009
Posts: 144

Post (Separately) Posted: Wed Jun 05, 2013 00:19    Post subject: Reply with quote

ProgMan13 Спасибо за дополнения!
Идея со словами появилась для того чтобы охватить все изображения, искать и группировать их без подглядывания на сам цвет. Можно добавить ещё словес чтобы охватить побольше цветов? Могу помочь если надо - заполнить эти значения. Или сделать такой алгоритм для названия цвета словом, который не учитывает оттенки, а называет, например, #FFC0CB (розовый) или #800000 (бордовый) - красным.
Вот у меня есть список значений HEX и названия цвета на английском.

Code:
MIME-Version: 1.0
Content-Type: application/octet-stream; name="namedcolors.7z"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="namedcolors.7z"

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
IAAAAAAA


Добавлено спустя 24 минуты:

А тут есть и русские названия http://ru.wikipedia.org/wiki/Список_цветов


Last edited by cojoc on Wed Jun 05, 2013 13:33; edited 4 times in total
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Jun 05, 2013 09:39    Post subject: Reply with quote

Цвета удобнее будет держать в INI-файле в папке плагина, каждый сможет добавить свои цвета. И плагину потребуется лишь получить HEX-код цвета и взять из инишника значение ключа с таким именем, или оставить в HEX, если такого нет.
А уже в LNG-файле можно указывать их переведённые названия (или не указывать, если многоязычность не нужна, это уже не повлияет на код).
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
cojoc



Joined: 04 Sep 2009
Posts: 144

Post (Separately) Posted: Wed Jun 05, 2013 16:04    Post subject: Reply with quote

Вариант с заполнением каждого значения словами хороший, правда практических применений мало - слишком много вариаций > 16 млн и у плагина нет поддержки gif и png, где конкретный оттенок имеет большое значение (не фотография).
Думается, что если сводить оттенки к основным 7 цветам + розовый, белый, чёрный, серый, коричневый (как это делает Google - пока не нашёл формулу, как это делается) и оставить только их в параметре Dominant Color Name, это было бы удобно.
Back to top
View user's profile Send private message
ProgMan13



Joined: 19 Aug 2009
Posts: 334

Post (Separately) Posted: Thu Jun 06, 2013 01:43    Post subject: Reply with quote

Flasher wrote:
Quote:
изменив Detect String
Каким образом?
cojoc wrote:
у плагина нет поддержки gif и png
X_detect=EXT="JPG"|EXT="JPE"|EXT="JPEG"|EXT="TIFF"|EXT="TIF"|EXT="PSD"|EXT="PNG"|EXT="GIF"

cojoc wrote:
Думается, что если сводить оттенки к основным 7 цветам
Если честно, не представляю как это сделать
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Jun 06, 2013 09:43    Post subject: Reply with quote

ProgMan13,
Если описать нужные цвета в виде диапазонов (по каждому каналу), оно так и получится. Диапазоны вынести в отдельный файл - и можно будет их настраивать. Типа, Red R:240-255 G:0-40 B:0-40 и т.д. Дальше останется лишь разбить всё цветовое пространство на множество таких диапазонов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
cojoc



Joined: 04 Sep 2009
Posts: 144

Post (Separately) Posted: Thu Jun 06, 2013 20:04    Post subject: Reply with quote

MVV wrote:
описать нужные цвета в виде диапазонов


Поискал реализацию как определить оттенки в 12 цветов, нашёл (если я правильно понял сам код) как раз на основе диапазонов в пространстве HSV:
http://robocraft.ru/blog/computervision/1063.html

кусок кода
Code:
// Various color types
//          0                   1         2              3              4                5                6             7               8               9                       10
enum {cBLACK=0, cWHITE, cGREY, cRED, cORANGE, cYELLOW, cGREEN, cAQUA, cBLUE, cPURPLE, NUM_COLOR_TYPES};
char* sCTypes[NUM_COLOR_TYPES] = {"Black", "White","Grey","Red","Orange","Yellow","Green","Aqua","Blue","Purple"};
uchar cCTHue[NUM_COLOR_TYPES] =    {0,       0,      0,     0,     20,      30,      60,    85,   120,    138  };
uchar cCTSat[NUM_COLOR_TYPES] =    {0,       0,      0,    255,   255,     255,     255,   255,   255,    255  };
uchar cCTVal[NUM_COLOR_TYPES] =    {0,      255,    120,   255,   255,     255,     255,   255,   255,    255  };

typedef unsigned int uint;

// число пикселей данного цвета на изображении
uint colorCount[NUM_COLOR_TYPES] = {0,          0,              0,              0,              0,              0,              0,              0,              0,              0 };

// Determine what type of color the HSV pixel is. Returns the colorType between 0 and NUM_COLOR_TYPES.
int getPixelColorType(int H, int S, int V)
{
        int color = cBLACK;

#if 1
        if (V < 75)
                color = cBLACK;
        else if (V > 190 && S < 27)
                color = cWHITE;
        else if (S < 53 && V < 185)
                color = cGREY;
        else
#endif
        {       
                if (H < 7)
                        color = cRED;
                else if (H < 25)
                        color = cORANGE;
                else if (H < 34)
                        color = cYELLOW;
                else if (H < 73)
                        color = cGREEN;
                else if (H < 102)
                        color = cAQUA;
                else if (H < 140)
                        color = cBLUE;
                else if (H < 170)
                        color = cPURPLE;
                else    // full circle
                        color = cRED;   // back to Red
        }
        return color;
}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group