Как я могу узнать, находится ли изображение в формате TIFF в формате CCITT T.6 (группа 4)?
-
20-09-2019 - |
Вопрос
Как я могу узнать, находится ли изображение в формате TIFF в формате CCITT T.6 (группа 4)?
Решение
Вы можете использовать этот пример кода (C#).Он возвращает значение, указывающее тип сжатия:
1:без сжатия
2:МККТТ Группа 3
3:Совместимость с факсимильной связью CCITT, группа 3
4:Группа 4 МККТТ (Т.6)
5:ЛЗВ
public static int GetCompressionType(Image image)
{
int compressionTagIndex = Array.IndexOf(image.PropertyIdList, 0x103);
PropertyItem compressionTag = image.PropertyItems[compressionTagIndex];
return BitConverter.ToInt16(compressionTag.Value, 0);
}
Другие советы
Вы можете проверить эти ссылки
Тег 259 (шестнадцатеричный 0x0103) хранит информацию о методе сжатия.
--- Сжатие Тег = 259 (103) Тип = word N = 1 Значение по умолчанию = 1.
1 = Нет сжатия, но данные упаковываются в байты как можно плотнее, без неиспользуемых битов, за исключением конца строки.Байты хранятся в виде массива из байтов, для примера битов <= 8, слово, если битовая выборка > 8 и <= 16, и dword, если битовая выборка > 16 и <= 32.Порядок байтов данных >8 бит должен соответствовать порядку, указанному в заголовке файла TIFF (байты 0 и 1).Строки должны начинаться с границ байтов.
2 = CCITT Group 3 - Одномерная Модифицированная кодировка длины пробега Хаффмана.Смотрите ALGRTHMS.txt Битовая выборка должна быть равна 1, поскольку этот тип сжатия определен только для двухуровневых изображений (например, изображений факса ...)
3 = Совместимый с факсимильной связью CCITT Group 3, точно такой, как указано в "Стандартизация факсимильных аппаратов группы 3 для передачи документов ", Рекомендация Т.4, том VII, брошюра VII.3, Терминальное оборудование и протоколы для телематических служб, Международный консультативный комитет по телеграфу и телефонной связи (CCITT), Женева, 1985, страницы с 16 по 31.Каждая полоса должна начинаться с границы в байтах.(Но напомним, что изображение может быть одной полосой.) Строки, которые не являются первой строкой полосы не обязательно начинаться с границы байта.Данные хранятся в виде байтов, а не слов - обращение байтов не допускается.Смотрите поле Group3Options для выбора параметров группы 3, таких как 1D или 2D кодирование.
4 = Совместимая с факсимильной связью CCITT Group 4, точно так, как указано в "Схемы факсимильного кодирования и функции управления кодированием для факсимильных аппаратов группы 4", Рекомендация Т.6, том VII, брошюра VII.3, Терминальное оборудование и протоколы для телематических служб, Международный консультативный комитет по телеграфу и телефонной связи (CCITT), Женева, 1985, страницы с 40 по 48.Каждая полоса должна начинаться с границы в байтах.Строки, которые не являются первой строкой строки не обязательно должны начинаться с границы байта.Данные хранятся в виде байтов, а не слов.Смотрите в поле Group4Options информацию о Параметрах группы 4.
5 = Сжатие LZW для изображений в оттенках серого, отображенных цветах и полноцветных изображениях.
Вы можете запустить identify -verbose
из ИзображениеМагия люкс на картинке.Найдите «Сжатие:Группа4» на выходе.
Обновить:
ИТАК, я скачал libtiff
библиотека по ссылке, которую я упоминал ранее, и из того, что я видел, вы можете сделать следующее:(непроверенный)
int isTIFF_T6(const char* filename)
{
TIFF* tif= TIFFOpen(filename,"r");
TIFFDirectory *td = &tif->tif_dir;
if(td->td_compression == COMPRESSION_CCITTFAX4) return 1;
return 0;
}
Предыдущая страница: Эта страница содержит много информации об этом формате и ссылки на некоторый код на C:
Вот выдержка:
Следующий документ охватывает разделы T.4, T.6 и JBIG:
"Обзор стандартам для электронных визуализации для систем факсимиле" в Журнал электронный воображения, объем.1, Нет.1, стр.5-21 января 1992 года.
Исходный код может быть получен как часть инструментария TIFF - TIFF image методы сжатия двоичных файлов изображения включают CCITT T.4 и T.6:
ftp://ftp.sgi.com/graphics/tiff/tiff-v3.4beta035-tar.gz Контакты:sam@engr.sgi.com
Подробнее: http://www.faqs.org/faqs/compression-faq/part1/section-16.html#ixzz0TYLGKnHI