Форум русскоязычного сообщества Ubuntu


Автор Тема: Как заменить один цвет на другой в .png?  (Прочитано 257 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 128
    • Просмотр профиля
Как заменить один цвет на другой в туче разноцветных .png? Нужно обработать множество картинок без искажений основных цветов.

Оффлайн zg_nico

  • Заслуженный пользователь
  • Модератор форума
  • Старожил
  • *
  • Сообщений: 3513
  • Nil mortalibus arduum est
    • Просмотр профиля
Re: Как заменить один цвет на другой в .png?
« Ответ #1 : 19 Апрель 2019, 13:19:41 »
ase66, утилита convert из пакета ImageMagic. Установка самого пакета:sudo apt install imagemagickВызываете с параметрами:convert input_image.png -fill white -opaque black output_image.pngбудет выполнена замена черного цвета на белый цвет в изображении input_image.png и все это будет сохранено в изображение output_image.png. Вот так в RGB-варианте то же самое (можно любой цвет задать, какой хочется; 0,0,0 - черный, 255,255,255 - белый):
convert input_image.png -fill 'rgb(255,255,255)' -opaque 'rgb(0,0,0)' output_image.pngДля "тучи" разноцветных надо определиться с общим параметром: по какому признаку их можно выдернуть у Вас из файловой системы, чтобы понять, что обрабатывать следует именно их? Они в одном каталоге лежат и их надо все там обработать? Тогда (опять же, рассматриваю вариант когда все они png):
cd /путь/к/каталогу
for file in *.png; do convert $file -fill 'rgb(255,255,255)' -opaque 'rgb(0,0,0)' modify_$file; done
Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4708
  • Capture the truth
    • Просмотр профиля
Re: Как заменить один цвет на другой в .png?
« Ответ #2 : 19 Апрель 2019, 13:35:47 »
Вот пример работы:
convert 1.png -fill "#000000" -opaque "#FF0000" 2.png ->

ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн ase66

  • Автор темы
  • Участник
  • *
  • Сообщений: 128
    • Просмотр профиля
Re: Как заменить один цвет на другой в .png?
« Ответ #3 : 19 Апрель 2019, 21:02:41 »
Большое спасибо за команду на поиск и массовую, пакетную обработку картинок.

Однако convert чрезвычайно грубый инструмент. Если кому нужно заменить чистый цвет с прямыми линиями, то конечно сработает. Но у меня полутона и тень.

Может ещё что-то есть. Например phatch отлично выдирает цвет в прозрачность. Вот если бы ещё и цвета мог заменять.
Есть ли альтернатива топорному convert ?

Оффлайн ALiEN175

  • Модератор форума
  • Старожил
  • *
  • Сообщений: 4708
  • Capture the truth
    • Просмотр профиля
Re: Как заменить один цвет на другой в .png?
« Ответ #4 : 19 Апрель 2019, 23:11:17 »
ase66, для полутонов есть замечательная опция fuzz.




Пользователь добавил сообщение 19 Апрель 2019, 23:32:17:
convert чрезвычайно грубый инструмент
почитать man или обратится к гуглу всемогущему. У imagemagick всяких опций - даже не десятки, а сотни (если не тысячи). Подбирайте конкретно под свои задачи. Неплохо будет, если вы приведете пример - что на что заменить. Исходный файл и что хотелось бы получить.
« Последнее редактирование: 19 Апрель 2019, 23:32:17 от ALiEN175 »
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

 

Страница сгенерирована за 0.083 секунд. Запросов: 23.