Ciao,
ha ragione la classe Bitmap: quelle foto sono capovolte.
Tuttavia, se su Windows, su Skydrive e in qualsiasi altro visualizzatore d'immagini le vedi dritte è perché, a corredo della foto, il tablet ha posto una proprietà
Exif che indica qual era l'orientamento al momento dello scatto. Grazie ad essa, i visualizzatori sanno come devono ruotare la foto affinché l'utente la veda dritta.
Il tuo problema è che, quando ti crei la miniatura, le proprietà Exif vanno perse ed i visualizzatori non sanno più di dover ruotare la foto. Puoi risolvere in due modi:
- Preservare almeno la proprietà Exif dell'orientamento. Questo puoi farlo così, copiando banalmente la proprietà dall'immagine originale alla thumbnail.
try {
var orientamento = imgOriginale.GetPropertyItem(0x0112);
imgThumbnail.SetPropertyItem(orientamento);
} catch {}
Solo per curiosita: il "valore magico" 0x0112 lo trovi descritto nella documentazione delle GDI+, insieme a tutti i valori che quella proprietà può assumere (da 1 a 8).
http://msdn.microsoft.com/en-us/library/windows/desktop/ms534416(v=vs.85).aspx#_gdiplus_constant_propertytagorientation
- In alternativa, se non vuoi che la corretta visualizzazione dipenda da una proprietà Exif, puoi leggerti il valore e ruotare la foto di conseguenza, proprio come farebbe un visualizzatore. Questo schema ti aiuta a capire come fare le rotazioni.
Esempio:
var tipiDiOrientamento = new RotateFlipType[]{
RotateFlipType.RotateNoneFlipNone, //0
RotateFlipType.RotateNoneFlipNone, //1
RotateFlipType.RotateNoneFlipX, //2
RotateFlipType.Rotate180FlipNone, //3
RotateFlipType.Rotate180FlipX, //4
RotateFlipType.Rotate90FlipX, //5
RotateFlipType.Rotate90FlipNone, //6
RotateFlipType.Rotate270FlipX, //7
RotateFlipType.Rotate270FlipNone //8
};
var orientamento = imgOriginale.GetPropertyItem(0x0112).Value[0];
imgThumbnail.RotateFlip(tipiDiOrientamento[orientamento]);
Comunque, se per il ridimensionamento ti affidi a qualche libreria esterna, controlla se ha già qualche opzione per gestire questa casistica.
ciao,
Moreno
Modificato da BrightSoul il 25 novembre 2013 17.22 -