Иногда возникает необходимость конвертировать многостраничный tiff-файл в какой-либо другой формат. Но некоторые программы сканирования создают tiff с ошибками:
- отсутствует тэк Photometric Interpretation, определяющий используемую цветовую модель, подробности ниже;
- первая страница сделана в более низком разрешении, чем остальные
Здесь нам приходит на помощь утилита tiffset, находящаяся в пакете libtiff-tools. Устанавливается этот пакет обычным способом:
# aptitude install libtiff-tools
С помощью утилит tiffdump и tiffinfo мы можем посмотреть информацию о файле, причем tiffdump выдает подробную информацию, содержащую:
- имя поля;
- числовой идентификатор поля;
- тип данных поля;
- count (если кто-нибудь знает, что это такое, напишите, буду очень благодарен);
- значение.
При редактировании нас будут интересовать следующие поля:
262 0x0106 PhotometricInterpretation Используемая цветовая модель.
282 0x011A XResolution Количество пикселей в ResolutionUnit строки.
283 0x011B YResolution Количество пикселей в ResolutionUnit столбца.
Первое поле сканирующие программы зачастую просто пропускают. Программы просмотра изображений используют по умолчанию значение 1, но программы преобразования ругаются на его отсутствие.
XResolution и YResolution - поля, определяющие количество точек на ResolutionUnit, как правило - на дюйм. Часто встречаются многостраничные tiff-файлы, в которых первая страница имеет разрешение 300x300, а все остальные - 96x96. Почему так получается - я не знаю.
Чтобы изменить значение тэга, нужно выполнить следующую команду:
$tiffset -s <идентификатор тэга> <присваимое значение> <имя файла>
Например, чтобы изменить цветовую модель, нужно выполнить следующую команду:
$tiffset -s 262 1 image.tif
Нужно учитывать, что у многостраничных файлов изменение выполняется только для первой страницы, поэтому может понадобиться "разрезать" изображение на отдельные части. Это делается с помощью следующей команды:
$tiffsplit image.tif
При этом в текущей директории создаются файлы xaaa.tif, xaab.tif и др. На всякий случай напомню, что в командах возможно использование шаблонов, то есть изменить значение цветовой модели для всех файлов сразу можно так:
$for file in `ls xaa*.tif`; do tiffset -s 262 1 $file; done
Объединить несколько файлов в один можно с помощью команды tiffcp:
$tiffcp *.tif newfile.tif
Теперь полученный файл можно преобразовать, например, в pdf:
$tiff2pdf newfile.tif > newfile.pdf
В данной команде используется оператор перенаправления вывода ">", так как программа tiff2pdf выводит полученные двоичные данные на стандартный вывод