2009-10-10 14 views

Odpowiedz

12

Możesz użyć tego przykładu kodu (C#). Zwraca wartość wskazująca rodzaj kompresji:

1: bez kompresji
2: CCITT Grupa 3
3: telefaks zgodny z CCITT Grupa 3
4: CCITT Grupa 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); 
} 
0

UPDATE:

SO, Pobrałem libtiff bibliotekę z linkiem wspomniałem wcześniej, iz tego co widziałem, można wykonać następujące czynności: (niesprawdzone)

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; 
} 

ostatnich: This page ma dużo informacji o tym formacie i linki do jakiegoś kodu w C:

Oto fragment:

Poniższy papier pokrywa T.4, T.6 i JBIG:

"Przegląd standardów elektronicznej obrazowania dla systemów faksowych" w Urzędowym Elektronicznego Imaging, Vol . . 1, nr 1, strony 5-21, styczeń 1992.

kodu źródłowego może być uzyskane w ramach TIFF narzędzi - TIFF techniki kompresji dwuskładnikowych obrazy to CCITT T.4 i T. 6:

ftp://ftp.sgi.com/graphics/tiff/tiff-v3.4beta035-tar.gz Kontakt: [email protected]

więcej: http://www.faqs.org/faqs/compression-faq/part1/section-16.html#ixzz0TYLGKnHI

3

można uruchomić identify -verbose z zestawu ImageMagick na obrazie. Poszukaj "Kompresja: Grupa 4" na wyjściu.

7

Można sprawdzić te linki

Znacznik 259 (hex 0x0103) zachować informacje o metodę kompresji.

--- Kompresja Tag = 259 (103) Type = słowo N = 1 domyślna = 1.

1 = bez kompresji, ale pakiet danych w bajtach tak mocno, jak to możliwe, bez niewykorzystane bity oprócz końca wiersza. Bajty są przechowywane w tablicy bajtów na bitspersample < = 8, słowa, jeśli bitspersample> 8 i < = 16 i DWORD bitspersample> 16 i < = 32. Kolejność bajt danych> 8 bitów musi być zgodny z podanym w nagłówku pliku TIFF (bajty 0 i 1). Wymagane są wiersze rozpoczynające się na granicach bajtów.

2 = CCITT Group 3 1-wymiarowe zmodyfikowane kodowanie długości przebiegu Huffmana. See ALGRTHMS.txt bitspersample musi być 1, ponieważ ten rodzaj kompresji jest zdefiniowana tylko dla obrazów dwupoziomowe (takich jak obrazy fax ...)

3 = telefaks kompatybilne CCITT Group 3, dokładnie tak, jak podano w „Normalizacja urządzenia faksowego z grupy 3 do transmisji dokumentu , "Zalecenie T.4, Tom VII, Fascicle VII.3, Urządzenia końcowe i protokoły do ​​usług telematycznych, Międzynarodowy Komitet Konsultacyjny ds. Telegrafów i Telefonów (CCITT), Genewa, 1985, strony od 16 do 31. Każdy pasek musi zaczynać od granicy bajtu. (Przypomnij sobie jednak, że obraz może być pojedynczym paskiem). Wiersze, które nie są pierwszym rzędem paska, nie są wymagane do rozpoczęcia granicy bajtów. Dane przechowywane są w postaci bajtów, a nie odwrócenie słów - nie jest dozwolone. Zobacz pole Group3Options dla Group 3Opcje, takie jak kodowanie 1D i 2D.

4 = telefaks zgodny z CCITT Grupa 4, dokładnie tak, jak podano w „telefaks kodowania i schematów kodowania funkcji sterowania dla grupy 4 Telefaks” Zalecenie T.6, tom VII, zeszyt VII.3, Urządzenia końcowe i protokoły usług telematycznych, Międzynarodowy komitet konsultacyjny ds. Telegrafu i telefonu (CCITT), Genewa, 1985, strony 40 do 48. Każdy pasek musi zaczynać się od granicy bajtów. Wiersze, które nie są pierwszym wierszem paska , nie muszą zaczynać się od granicy bajtów. Dane to przechowywane jako bajty, a nie słowa. Zobacz pole Group4Options dla Group 4Outions for Group 4 options.

5 = Kompresja LZW dla obrazów w skali szarości, zmapowanych i pełnokolorowych.