Можно ли определить из заголовка 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), делая изображение полностью черным. По умолчанию ч / б выглядит хорошо.
Я прочитал почти всю документацию, которую я могу найти в Интернете, в том числе:
- Эта довольно информативная статья доктора Доббса
- Объяснение графики PCX
- Техническое справочное руководство по формату файлов ZSoft PCX
- Формат PCX
... и множество других, менее полезных страниц, которые, кажется, не обсуждают обсуждаемый вопрос.