LINUX.ORG.RU

GIMP портит палитру

 


0

1

Открываю файл PNG с палитрой 255 цветов, редактирую, экспортирую. Открываю экспортированный файл — цветов всего 254, а цвет, который был номер 0 (белый), в палитре отсутствует.

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

Как отключить эту фичу?

P.S. Гимп версий 2.9.4 и 2.9.6. Дженту.

P.P.S. Отправил баг: https://bugzilla.gnome.org/show_bug.cgi?id=791531

На самом деле, проблема оказалась ещё сложнее. 0-й цвет был прозрачным чёрным (кто знаком с PNG8, поймёт), он пропадал при импорте, все цвета сдвигались на 1. При экспорте новый 0-й цвет заменялся обратно на прозрачный чёрный, остальные цвета обратно не сдвигались. Просмотреть палитру смог только в IrfanView 2005 года.

Грязное решение, которое работает:

  1. Сохранить палитру 255 цветов из повреждённого файла в GPL (текстовый файл). Гадские авторы Гимпа убрали из меню явный экспорт в *.gpl. Все палитры автосохраняются в ~/.gimp-2.8/palettes/ и можно их копировать оттуда. Автосохранение происходит при выходе или при нажатии «Save» в редакторе палитры.
  2. Руками добавить в начало белый цвет. Возможно, сойдёт любой, возможно, необходим цвет, отсутствующий в палитре.
  3. В Гимпе преобразовать изображение с палитрой 255 цветов в 4-байтное RGB , затем преобразовать в индексированное 256 цветов с
  4. исправленной палитрой.
  5. Экспортировать. Результат приемлемый.
  6. Повторять пункт 3 при каждом открытии PNG с этой палитрой.

UPD: По пунктам 1-2: можно обойтись средствами Гимпа, без экспорта. Нужно в редакторе палитры добавить в конец 256-й цвет, затем в списке палитр сделать «Offset Palette».

★★★★★

Последнее исправление: question4 (всего исправлений: 6)

Ответ на: комментарий от mky

Да. Проблема осложняется тем, что я не нашёл способа смотреть палитры под Линуксом помимо самого Гимпа.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

В ImageMagic входит утилита identify, она может показать палитру в RGB значениях, наверное, даже удобнее для вашего случая, чтобы сравнивать палитры исходного и отредактированного файла.

identify -verbose файл.png

Правда не уверен, что она работает правильно, если проверите, отпишетесь сюда.

mky ★★★★★
()
Ответ на: комментарий от mky

Уже пробовал. identify -verbose показывает только присутствующие в картинке цвета, и, пожоже, в том порядке, в котором они встречаются. А мне нужно было именно проверить совпадают ли палитры побитно.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4

Посмотрел ваши картинки из багрепорта, если делать:

identify -verbose -ping ФАЙЛ.png

то выводится в одном случае палитра в 256, в другом 255 цветов (сдвинутая), возможно то, что вы видите в IrfanView. Но в png для прозрачности используется отдельный tRNS блок и если картинка с палитрой, то несколько цветов могут иметь прозрачность, может исходная картинка именно такая...

mky ★★★★★
()
Ответ на: комментарий от mky

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

В документации ImageMagic это названо «PNG8». Имитация прозрачности GIF средствами PNG. В формальных стандартах этого нет, но этим активно пользуются. Нулевой цвет является полностью прозрачным, а все остальные полностью непрозрачными. GIMP это распознаёт и обрабатывает особым образом (и, возможно, прав). Но экспортирует некорректно.

question4 ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Сутки назад была длинная дискуссия с ТС на #gimp.

AP ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Это баг в Гимпе. То есть на данный момент средствами Гимпа нерешаемо. Подробности — по ссылке в первом посте. Но так как mky пытается помочь, я решил объяснить, что нет необходимости решать столь общую задачу, как он её сформулировал.

Моддер, для которого я делал эти картинки, всё поправил, прогнав их через какой-то другой редактор (вероятно, Фотошоп), и этого достаточно. Просто обидно, что открыто-свободными средствами этого сделать нельзя.

question4 ★★★★★
() автор топика
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от mky

если делать:

identify -verbose -ping ФАЙЛ.png

то выводится в одном случае палитра в 256, в другом 255 цветов (сдвинутая), возможно то, что вы видите в IrfanView.

Добрался до линуксовой машины и проверил. Да, именно так.

question4 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.