Ho flussi di dati grezzi da file di immagine, come:libreria C++ per la lettura di endian-aware dei metadati di flusso di file raw?
vector<char> rawData(fileSize);
ifstream inFile("image.jpg");
inFile.read(&rawData[0]);
voglio analizzare le intestazioni dei diversi formati di immagine per altezza e larghezza. Esiste una libreria portatile in grado di leggere inte, long, shorts, ecc. Dal buffer/stream, convertendo per endianess come specificato?
mi piacerebbe essere in grado di fare qualcosa di simile: short x = rawData.readLeShort(offset);
o long y = rawData.readBeLong(offset)
un'ancora migliore opzione sarebbe un & libreria di metadati dell'immagine portatile leggero (senza il peso aggiuntivo di una libreria di manipolazione delle immagini) che può funzionare su dati immagine grezzi. Ho trovato che le librerie Exif là fuori non supportano png
e gif
.
ho generalizzato che a questo: 'modello T Magia :: getLE (const char * data) const {valore T = 0; int bytes = sizeof (T); for (int i = 0; i
Kache
In realtà, il codice sopra ha un bug. Invece di spostare "caratteri" su uno alla volta, sposta "T" uno alla volta. Questo corregge: 'template T Magic :: getLE (const char * data) const {valore T = 0; int bytes = sizeof (T); carattere non firmato c; for (int i = 0; i
Kache