Как я могу изменить цвет сложной графики? - PullRequest
4 голосов
/ 10 июня 2010

У меня есть изображение в Adobe Illustrator (скажем, кот), которое я хочу использовать в приложении для Android.Я бы хотел, чтобы пользователь мог менять цвет меха с помощью палитры цветов.Что я могу сохранить графику как (SVG?), Чтобы позволить мне программно контролировать цвет с помощью приложения для Android?Должен ли я иметь отдельное изображение для каждого цвета кошки?

Ответы [ 5 ]

5 голосов
/ 18 июня 2010

Существует также простой прием для смешивания цветов без необходимости касаться данных пикселей. Просто сохраните несколько версий изображения со смещенными цветами, прочитайте их в приложение, наложите их и используйте альфа-смешение, чтобы смешать их. Таким образом, вы можете получить плавные изменения цвета без особых усилий. (Я сделал это, но не на Android.)

Ответьте на комментарий, чтобы у меня было больше места: Да, три изображения R / G / B будут работать. Если вы хотите иметь больше вариантов цвета, вы можете подготовить шесть изображений с оттенком, повернутым на 60 градусов друг от друга (60/120/180/240/300/360). Это легко сделать в любом редакторе растровых изображений, вот так выглядит диалоговое окно Hue / Saturation в Pixelmator :

Сдвиг оттенка http://zoul.fleuron.cz/tmp/hue.jpg

Затем вы просто отображаете два из них за раз, сохраняете нижний альфа на одном и меняете верхний альфа с 0 на 1. Когда вы достигаете 1, вы скрываете нижнее изображение и отображаете следующий на переднем плане с нулем альфа. Повторите ad libitum. Это даст вам много цветовых оттенков с плавным смешиванием и небольшой работой.

5 голосов
/ 13 июня 2010

Вам не нужно несколько изображений - вы можете сделать это с одним изображением - используйте любой формат, поддерживаемый на целевой платформе. Android поддерживает PNG, GIF и JPG - я бы выбрал PNG или JPG с настройками для JPG, поскольку это, вероятно, фотография.

Предполагая, что существующее изображение имеет цвет (т.е. не черный или белый мех), вы можете изменить цвета меха либо на

  • раскрашивание изображения - это заставляет все цвета приобретать определенный оттенок
  • сдвиг оттенка - это сдвиг оттенка всех цветов на заданную величину

Для реализации этого. Вы можете использовать jjil - библиотеку изображений Джона - для мобильных устройств с особой поддержкой Android.

Чтобы реализовать оба приведенных выше преобразования, выполните следующие действия:

  1. сначала преобразуйте изображение в HSV , используя RgbHsv стадию конвейера
  2. преобразовать желаемый цвет меха RGB в HSV (например, если требуется красный мех, преобразовать rgb (красный) в hsv (красный). ( Пример кода .)
  3. Затем вы выбрали способ изменения цвета изображения - либо установив H (оттенок) для каждого пикселя на то же значение оттенка, что и требуемый цвет меха (из шага 2), либо добавив разницу выбранного оттенка к оттенок пикселя изображения (модуль 255), чтобы получить сдвиг оттенка. Вы также можете масштабировать значение V, чтобы получить более светлые или более темные оттенки меха.
  4. Значения HSV изображения затем преобразуются обратно в rgb. Похоже, что в библиотеке jjil нет фильтра HsvRgb, но это может быть реализовано как обратное к RgbHsv. Вот функция HSV2RGB .

Если на изображении есть другие важные цвета, вы можете оставить их без изменений и применить преобразование только к определенным цветам на изображении. Вы проверяете текущее значение HSV, и если значения оттенка, S или V находятся за пределами тех значений, которые вы не хотите изменять, вы просто не изменяете эти значения. Например, если у кота зеленые глаза и коричневый мех, вы пропускаете значения HSV, где H указывает, что это оттенок зеленого - оставляя этот цвет, а глаза неизменными.

0 голосов
/ 19 июня 2010

Просто имейте альфа-изображение, которое накладывается на слой сплошного цвета, которым управляет пользователь.

0 голосов
/ 17 июня 2010

Если вы говорите о штриховом искусстве, тогда SVG - хороший выбор, потому что встроенные в XHTML его свойства становятся доступными для сценариев в Gecko или Webkit через Javascript.Затем вы можете настроить таргетинг только на узлы волос и установить свойство цвета в режиме реального времени.

SVG также поддерживает ссылки и клонирование, поэтому вам, вероятно, потребуется изменить цвет только в одном месте и настроить все узлы волос для наследования.it.

ДОБАВЛЕННАЯ ССЫЛКА: https://launchpad.net/libsvg-android

0 голосов
/ 13 июня 2010

Вы можете использовать любой формат изображения с индексированной палитрой цветов. GIF - хороший пример, JPEG - нет.

Затем просто измените байты палитры изображений в файле, и вы измените цвет меха.

Статья в формате изображения Wikipedia GIF объясняет, где находятся данные файловой палитры, и их формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...