2011-01-07 7 views

risposta

4

E 'possibile contrassegnare un file JPG per cambiare il modo in cui si suppone per essere visualizzato senza caricare e decodifica l'immagine JPG in un bitmap in memoria. Il file immagine JPG può facoltativamente includere una sezione di metadati EXIF, spesso utilizzata per descrivere il dispositivo e le circostanze coinvolte nella creazione o acquisizione dell'immagine: Modello fotocamera, velocità dell'otturatore, equivalente esposizione ISO, ecc.

I metadati EXIF ​​anche include un indicatore di orientamento che può essere usato per informare le app di visualizzatore di immagini su come i pixel dell'immagine JPG devono essere orientati sulla superficie del display. Questo flag di orientamento (e i metadati EXIF) possono essere letti e scritti nel file JPG senza caricare o decodificare i dati dell'immagine dei pixel. Ciò significa anche che l'orientamento può essere modificato più volte senza perdita di dettagli dell'immagine, poiché l'immagine non viene decompressa, ruotata e quindi ricompressa in un nuovo file sul disco.

Per fare ciò, è necessario il codice C# che legge il formato file JFIF del file JPG e trova ed estrae la sezione EXIF. Non penso che il lettore di immagini .NET integrato fornisca qualcosa di simile.

Si noti che non tutti i lettori JPG rispettano il flag di orientamento EXIF. Credo che l'app Image Preview integrata in Windows rispetti il ​​flag di orientamento EXIF ​​nelle versioni correnti di Windows, ma non nelle precedenti versioni di Windows come Windows XP.

Maggiori informazioni sull'orientamento bandierina EXIF ​​qui: http://jpegclub.org/exif_orientation.html

+0

ma per vedere l'immagine in realtà ruotata si avrebbe bisogno che lo spettatore obbedisce questo flag Orientamento ... quanti spettatori davvero farlo? –

+1

Trovo che il flag di Orientamento ora sia più spesso supportato da un visualizzatore. L'anteprima immagine di Windows Vista e Windows 7 onora il flag di orientamento. Quando si sta visualizzando un'immagine nell'anteprima e si cambia il suo orientamento, lo fa senza perdita di dettagli dell'immagine - che a me sembra che stia modificando il flag di orientamento EXIF. Sospetto che la classe .NET Image possa onorare il flag di Orientamento quando si carica un file JPG in un bitmap in memoria, ma non l'ho testato. – dthorpe

Problemi correlati