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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

Оффлайн ase66

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

Оффлайн zg_nico

  • Заслуженный пользователь
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3512
  • 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.

Оффлайн ALiEN

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

🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ase66

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

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

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

Оффлайн ALiEN

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




Пользователь добавил сообщение 19 Апреля 2019, 23:32:17:
convert чрезвычайно грубый инструмент
почитать man или обратится к гуглу всемогущему. У imagemagick всяких опций - даже не десятки, а сотни (если не тысячи). Подбирайте конкретно под свои задачи. Неплохо будет, если вы приведете пример - что на что заменить. Исходный файл и что хотелось бы получить.
« Последнее редактирование: 19 Апреля 2019, 23:32:17 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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