[Решено] Можно ли определить фон картинки

ZULI

Client
Регистрация
09.09.2020
Сообщения
423
Благодарностей
165
Баллы
43
Привет!

У меня есть папка в которой есть картинки товара для двух разных получателей, фотки отличаются фоном, для одного сайта фон фоток белый, для другого черный. Так сложилось что они все в одной папке и названия у них такие, что по ним нельзя понять какой цвет фона. Можно как-то определить цвет фона, чтобы правильно грузить картинки на сайты?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Можно высчитать цвет фона изображения.
Одно будет темнее, другое светлее.
Если у них названия такие же - тогда то что светлее пойдет на один сайт, то что темнее - на другой сайт (преобладание цветов по идее сохранится).
Как сразу узнать цвета - не знаю, а вот по пикселям - просто берем цвета пикселя, суммируем, делим на 3 - вот уже какое-то значение. Получаем для каждого пикселя, делим на количество пикселей - получим среднее значение относительно изображения. Высчитываем для двух изображений - одно будет со значением больше, другое с меньшим.
Но... Это хорошо сработает если размер картинок одинаковый примерно...
 
  • Спасибо
Реакции: ZULI

ZULI

Client
Регистрация
09.09.2020
Сообщения
423
Благодарностей
165
Баллы
43
Там картинки по суди белые, просто человек видимо в фотошопе фон темный нарисовывает, т.к. размеры одинаковые черной и белой копии.

Но идею я понял, буду искать в инете как это сделать.
 

eee

Client
Регистрация
04.06.2018
Сообщения
134
Благодарностей
31
Баллы
28
Там картинки по суди белые, просто человек видимо в фотошопе фон темный нарисовывает, т.к. размеры одинаковые черной и белой копии.

Но идею я понял, буду искать в инете как это сделать.
Установите ImageMagic (https://zennolab.com/discussion/threads/biblioteka-magick-net-c-image-magick-rabota-s-izobrazhenijami-i-drugie-poleznjashki.70162/) и определяйте доминирующий цвет:
C#:
string InputImagePath = project.Variables["InputImagePath"].Value; // В переменной InputImagePath указать путь к изображению
using (MagickImage image = new MagickImage(InputImagePath)){
   Dictionary<MagickColor, int> dict = image.Histogram();
             var keyOfMaxValue = dict.Aggregate((x, y) => x.Value > y.Value ? x : y).Key;
                 Color c = keyOfMaxValue.ToColor();
             string hex = "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
             string rgb =  c.R.ToString() + ", " + c.G.ToString() + ", " + c.B.ToString();
    project.Variables["HexColor"].Value = hex;
    project.Variables["ColorRGB"].Value = rgb;
    project.SendInfoToLog("", "ColorRGB: " + rgb + " -  HexColor: " + hex, true);
}
 

Вложения

Последнее редактирование:

ZULI

Client
Регистрация
09.09.2020
Сообщения
423
Благодарностей
165
Баллы
43
@eee спасибище! это то что мне нужно. белый от черного отличает.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)