Конвертируйте изображение цветов палитры в истинное цветное изображение 16x16, в реальный файл палитры - PullRequest
0 голосов
/ 03 сентября 2018

Справочная информация: я пытаюсь просмотреть ресурсы в архивных файлах старой игры. Они 8-битные. Мне нужна палитра, чтобы они выглядели правильно.

  • У меня есть палитра. DxWnd поддерживает дамп активной палитры.

  • Однако палитра имеет форму диалога с растянутыми 16x16 цветами (= 256).

Original output

[обновлено, чтобы включить фактический вывод]

  • Затем я сжал их до одного пикселя на цвет. Так что теперь у меня есть растровое изображение 16x16 (настоящий цвет).

Я хочу получить файл палитры из этого. Я не знаю, существует ли стандартный формат для палитр, или это просто обычные старые данные (256 * 3 для RGB) байтов. GIMP поддерживает формат палитры, который можно импортировать при импорте «необработанных данных изображения».

Итак, вопрос в том, как бы проще всего было преобразовать это изображение с истинным цветом 16x16 в блок палитры размером 3x256 байтов?

Будь то инструменты, или Python, C / C ++ или что-то еще. Дело в том, что это незначительная проблема («неправильный формат данных»). Так что если некоторые существующие инструменты (Linux или Windows) могут использовать его, во что бы то ни стало.

Чтобы быть абсолютно ясным: это не спрайт. Это не должно быть эвристически преобразовано в некоторую палитру "наилучшего соответствия". Это буквально палитра.

[править] Я пытался, согласно комментариям, вывести палитру из GIMP и IrfanView, но вместо этого получаю беспорядочный набор цветов:

Jumbled result after 8-bit conversion

1 Ответ

0 голосов
/ 22 марта 2019

ImageMagick даст необработанное 256-битное 24-битное RGB-изображение, которое GIMP может использовать в качестве палитры при открытии необработанного изображения из вашего изображения, например:

convert UEw8E.png -resize '16x16!' -filter point -depth 8 palette.rgb

(! означает принудительный размер, независимо от соотношения сторон, необходимый, поскольку ваше изображение не является квадратом. -filter point пропускает фильтры уменьшения масштаба. -depth 8 форсирует 8 бит на цвет. Хотя ваше изображение уже равно 8 бит на цвет, полезно знать наверняка, какой формат он будет выводить.)

Созданный файл, palette.rgb, представляет собой необработанный массив палитры 8 бит на цвет (24-бит RGB) из вашего изображения, слева направо, сверху вниз. (который, я думаю, вы просили)

Теперь открываем любое необработанное изображение с помощью GIMP (протестировано с 2.8.22) с настройками

  • Тип изображения: индексированный
  • Тип палитры: R, G, B (нормальная)
  • Файл палитры: palette.rgb

Палитра внутри GIMP выглядит следующим образом (все в том же порядке, что и на вашем изображении):
the palette inside GIMP

...