Как я могу узнать, находится ли изображение TIFF в формате CCITT T. 6 (Группа 4)?
Как я могу узнать, находится ли изображение TIFF в формате CCITT T. 6 (Группа 4)?
4 ответов
вы можете использовать этот пример кода (C#). Возвращает значение, указывающее тип сжатия:
1: нет сжатие
2: CCITT Group 3
3: факсимильно-совместимая группа CCITT 3
4: CCITT Group 4 (T. 6)
5: LZW
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 (hex 0x0103) хранит информацию о методе сжатия.
--- сжатия Tag = 259 (103) Тип = слово N = 1 По умолчанию = 1.
1 = нет сжатия, но упакуйте данные в байты как можно плотнее, без неиспользованный только в конце ряда. Байты хранятся в виде массива байтов, для BitsPerSample 8 и 16 и 8 бит должно соответствовать тому, что указано в заголовке файла TIFF (байты 0 и 1). Строки должны начинаться с границ байтов.
2 = CCITT Group 3 1-мерная модифицированная кодировка длины пробега Хаффмана. См. ALGRTHMS.txt BitsPerSample должен быть 1, так как этот тип сжатия определяется только для двухуровневых изображений (например, изображений факса...)
3 = Facsimile-совместимая группа CCITT 3, точно как указано в "Стандартизация факсимильной аппаратуры группы 3 для документов передача", рекомендация Т. 4, том VII, брошюра VII.3, Оконечное оборудование и протоколы для телематических служб, Международный телеграфно-телефонный Консультативный комитет (CCITT), Geneva, 1985, pages 16 через 31. Каждая полоса должна начните с границы байта. (Но вспомните, что изображение может быть одна полоса.) Строк, которые не являются первой строкой полосы не требуется начинать с границы байта. Данные хранятся как байты, а не слова-байт-реверсирование не допускается. Увидеть Поле Group3Options для параметров группы 3, таких как кодирование 1D vs 2D.
4 = факсимильно-совместимая группа CCITT 4, указанный в "Схемы факсимильного кодирования и функции управления кодированием для группы 4 факсимильный аппарат", рекомендация Т. 6, Том VII, брошюра VII.3, терминальное оборудование и протоколы для телематических обслуживаний, Международный телеграфно-телефонный Консультативный комитет (CCITT), Geneva, 1985, pages 40-48. Каждая полоса должна начните с границы байта. Строки, которые не первый ряд полоса не требуется, чтобы начать на границе байта. Данные хранится в байтах, а не в словах. См. поле Group4Options для Группа 4 варианта.
5 = сжатие LZW, для оттенков серого, отображенного цвета и полноцветных изображений.
вы можете запустить identify -verbose
с ImageMagick люкс на изображении. Найдите "сжатие: Group4" в выходных данных.
обновление:
Итак, я скачал 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:
"обзор стандартов электронный визуализация для факсимильных систем " in Journal of Electronic Imaging, Vol. Один, № 1, С. 5-21, январь 1992 года.
исходный код можно получить как часть набор инструментов TIFF-изображение TIFF методы сжатия для двоичного кода изображения включают 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