Можно ли определить из заголовка 1-битного PCX, должна ли использоваться палитра или нет?

Я написал декодер PCX (ImageIO плагин в Java), и он работает просто отлично, за исключением одной детали:

Я не понимаю, если и / или когда я должен использовать два первых цвета палитры в заголовке, или просто использовать фиксированную ч / б палитру для 1-битных данных.

Есть ли алгоритм или эвристика, которые будут работать, чтобы определить, следует ли использовать палитру, или вместо этого следует использовать стандартный ч / б? Есть ли какая-то настройка в шапке, которую мне не хватает? Или нужно просто знать эту информацию заранее, перед расшифровкой?

Образцы файлов, которые у меня есть, показывают довольно противоречивое поведение:

  • У меня есть пример файла, который я не могу поделиться, где это не имеет значения: версия: 0, bpp: 1, плоскости: 1, информация о палитре: 0 Использование палитры заголовка в порядке, так же, как и ч / б по умолчанию,

  • Пример файла, в котором палитра, вероятно, не должна использоваться (но версия 2, может быть, должна?): Версия: 2, bpp: 1, плоскости: 1, информация о палитре: 0. Использование палитры сделает фон синим. По умолчанию ч / б выглядит хорошо.

  • У меня также есть пример файла, которым я не могу поделиться, где я понимаю, что палитра не должна использоваться: Версия: 3, bpp: 1, плоскости: 1, информация о палитре: 0 Здесь палитра вся черная (все 0), что делает смысл как версия 3 означает отсутствие палитры.
  • Пример файла, в котором должна использоваться палитра (на основе ручной проверки цветов): Версия: 5, bpp: 1, плоскости: 1, информация о палитре: 0. Использование палитры заголовка хорошо. По умолчанию ч / б выглядит перевернутым.
  • Пример файла, в котором палитра не должна использоваться: версия: 5, bpp: 1, плоскости: 1, информация о палитре: 0 (как в предыдущем примере). Использование палитры сделает поезд белым на черном фоне. По умолчанию ч / б выглядит хорошо.
  • Пример файла, где это не имеет значения: версия: 5, bpp: 1, плоскости: 1, информация о палитре: 0. Использование палитры заголовка в порядке, так же как и ч / б по умолчанию.
  • У меня также есть пример файла, написанного Photoshop, который я не могу поделиться там, где палитра не должна использоваться: Версия: 5, bpp: 1, плоскости: 1, информация о палитре: 0 Здесь палитра - просто мусорные значения (15, 15,15, 14,14,14... 0,0,0), делая изображение полностью черным. По умолчанию ч / б выглядит хорошо.

Я прочитал почти всю документацию, которую я могу найти в Интернете, в том числе:

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

0 ответов

Другие вопросы по тегам