2011-04-13 2 views
0

J'écris un programme où je dois d'abord charger les images de vignettes avant de les traiter.Les vignettes chargées ne sont pas pivotées même si la grande image est

img = Image.FromFile(file_path); 

int img_w = img.Width; 
int img_h = img.Height; 

int desired_size = 150; 

int img_h1 = desired_size; 
double resize = (double)img_h/(double)img_w; 
resize = (double)desired_size * resize; 
img_h1 = (int)resize; 

thumb = img.GetThumbnailImage(desired_size, img_h1, null, IntPtr.Zero); 

Ce code charge une image, puis crée une vignette.

Certaines des photos prises par l'appareil photo ont été pivotées, donc je les ai fait pivoter de 90 degrés dans IrfanView. Même si les miniatures chargées dans mon application C# sont encore mal tournées (grande image est ok).

Comment contourner ce problème?

Répondre

0

Je ne vois rien dans votre code susceptible de faire pivoter l'image, donc je pense qu'il y a un problème avec le fichier image que vous chargez. Plus précisément, je suppose que votre fichier image a une vignette intégrée qui n'a pas été tournée comme l'image «principale». Vous avez dit que vous avez utilisé IrfanView pour faire pivoter les images: take a look at this thread et actualiser les vignettes. Cela pourrait bien résoudre votre problème, et voici pourquoi:

Citant MSDN's documentation for Image.GetThumbnailImage:

Si l'image contient une image incrustée miniature, cette méthode récupère la miniature et échelles à la taille demandée. Si l'image ne contient pas d'image miniature incorporée , cette méthode crée une image miniature en redimensionnant l'image principale.

Questions connexes