2009-10-10 15 views

risposta

12

È possibile utilizzare questo esempio di codice (C#). restituisce un valore che indica il tipo di compressione:

1: nessuna compressione
2: CCITT Gruppo 3
3: compatibile Fax CCITT Gruppo 3
4: CCITT Gruppo 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, ho scaricato la libreria libtiff dal link che ho citato prima, e da quello che ho visto, è possibile effettuare le seguenti operazioni: (non testato)

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

PRECEDENTE: This page ha un sacco di informazioni su questo formato e collegamenti a qualche codice in C:

Ecco un estratto:

Il seguente documento copre T.4, T.6 e JBIG:

"Rassegna di standard per l'imaging elettronico per i sistemi facsimile" in Journal of Electronic Imaging, Vol . . 1, No. 1, pp 5-21, gennaio 1992.

Il codice sorgente può essere ottenuto come parte di un TIFF toolkit - TIFF immagine tecniche di compressione per binari immagini comprendono CCITT T.4 e T. 6:

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

Per saperne di più: http://www.faqs.org/faqs/compression-faq/part1/section-16.html#ixzz0TYLGKnHI

3

È possibile eseguire identify -verbose dalla suite ImageMagick sull'immagine. Cerca "Compressione: Group4" nell'output.

7

È possibile controllare questi collegamenti

Il tag 259 (esadecimale 0x0103) memorizzare le informazioni sul metodo di compressione.

--- compressione Tag = 259 (103) Type = parola N = 1 predefinita = 1.

1 = No compressione, ma imballare dati nel byte più stretta possibile, senza bit inutilizzati tranne alla fine di una riga. I byte sono memorizzati come una matrice di byte, per BitsPerSample < = 8, parola se BitsPerSample> 8 e < = 16, e DWORD se BitsPerSample> 16 e < = 32. L'ordinamento dei byte di dati> 8 bit deve essere coerente con quello specificato nell'intestazione del file TIFF (byte 0 e 1). Le righe devono iniziare sui limiti dei byte.

2 = CCITT Gruppo 3 Codifica lunghezza di esecuzione Huffman modificata in modo unidimensionale. Vedi ALGRTHMS.txt BitsPerSample deve essere 1, dal momento che questo tipo di compressione è definito solo per immagini a due colori (come immagini fax ...)

3 = Facsimile compatibile CCITT Gruppo 3, esattamente come specificato in "normalizzazione di apparecchio di facsimile del Gruppo 3 per la trasmissione del documento , "Raccomandazione T.4, Volume VII, Fascicolo VII.3, Apparecchiature terminali e protocolli per servizi telematici, Comitato consultivo telegrafico internazionale e telefono (CCITT), Ginevra, 1985, pagine da 16 a 31. Ogni striscia deve iniziare su un limite di byte. (Ma ricorda che un'immagine può essere una singola striscia .) Righe che non sono la prima riga di una striscia sono non richieste per iniziare su un limite di byte. I dati vengono memorizzati come byte, non parole - non è consentito l'inversione dei byte. Vedi il campo Group3Opzioni per le opzioni del Gruppo 3 come la codifica 1D vs 2D.

4 = Facsimile compatibile CCITT Gruppo 4, esattamente come specificato in "Facsimile schemi di codifica e di codificazione di funzioni per il gruppo 4 Apparecchio di facsimile," raccomandazione T.6, Volume VII, Fascicle VII.3, Apparecchiature terminali e protocolli per servizi telematici, Il comitato consultivo internazionale telegrafico e telefonico (CCITT), Ginevra, 1985, pagine 40 a 48. Ogni striscia deve iniziare su un limite di byte. Le righe che non sono la prima riga di una striscia non devono iniziare su un limite di byte. I dati sono memorizzati come byte, non parole. Vedi il campo Group4Options per le opzioni del gruppo 4 .

5 = LZW Compressione, per immagini in scala di grigi, a colori mappati e a colori.