Esiste un modo per dedurre quale formato immagine è un file, senza leggere l'intero file?

StackOverflow https://stackoverflow.com/questions/52739

  •  09-06-2019
  •  | 
  •  

Domanda

Esiste un buon modo per vedere in che formato è un'immagine, senza dover leggere l'intero file in memoria?

Ovviamente questo varierebbe da formato a formato (sono particolarmente interessato ai file TIFF) ma che tipo di procedura sarebbe utile per determinare che tipo di formato immagine è un file senza dover leggere l'intero file?

BONUS:Cosa succede se l'immagine è una stringa con codifica Base64?Qualche modo affidabile per dedurlo prima di decodificarlo?

È stato utile?

Soluzione

La maggior parte dei formati di file immagine hanno byte univoci all'inizio.L'Unix file Il comando esamina l'inizio del file per vedere che tipo di dati contiene.Vedi l'articolo di Wikipedia su Numeri magici nei file E magicdb.org.

Altri suggerimenti

Certo che c'è.Come hanno già detto gli altri, la maggior parte delle immagini inizia con una sorta di "Magia", che si tradurrà sempre in una sorta di dati Base64.Di seguito sono riportati un paio di esempi:

Inizierà una bitmap con Qk3

Inizierà un Jpeg /9j/

Inizierà una GIF con R0l (È uno zero come secondo carattere).

E così via.Non è difficile prendere i diversi tipi di immagine e capire in cosa codificano.Fai solo attenzione, poiché alcuni hanno più di un pezzo di magia, quindi devi tenerne conto nel tuo "codice di traduzione" B64.

O file sulla riga di comando *nix o leggendo i byte iniziali del file.La maggior parte dei file presenta un'intestazione univoca nei primi byte.Ad esempio, l'intestazione di TIFF è simile a questa:

0x00000000: 4949 2a00 0800 0000
Per ulteriori informazioni sul formato file TIFF, in particolare se desideri sapere cosa significano quei byte, vai Qui.

Un sito completo di formati di file è disponibile all'indirizzo:

http://www.wotsit.org

I TIFF inizieranno con II o MM (ordinamento byte Intel o Motorolla).
La specifica TIFF 6 può essere scaricata Qui e non è troppo difficile da seguire

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top