Загруженные миниатюры не поворачиваются, даже если большое изображение - PullRequest
0 голосов
/ 13 апреля 2011

Я пишу программу, в которой мне нужно сначала загрузить миниатюры изображений перед их обработкой.

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);

Этот код загружает изображение, а затем создает миниатюру.

Некоторые фотографии, сделанные камерой, были повернуты, поэтому я повернул их на 90 градусов в IrfanView. Несмотря на это, миниатюры, загруженные в мое приложение c #, по-прежнему вращаются неправильно (большое изображение в порядке).

Как обойти эту проблему?

1 Ответ

0 голосов
/ 04 мая 2011

Я не вижу в вашем коде ничего, что могло бы повернуть изображение, поэтому я думаю, что что-то не так с загружаемым файлом изображения.

В частности, я предполагаю, чтоВаш файл изображения имеет встроенную миниатюру, которая НЕ была повернута, как «основное» изображение.Вы сказали, что использовали IrfanView для поворота изображений: посмотрите на эту ветку и обновите миниатюры.Это вполне может решить вашу проблему, и вот почему:

Цитирование Документация MSDN для Image.GetThumbnailImage :

Если изображение содержит встроенное уменьшенное изображение,Метод извлекает встроенный эскиз и масштабирует его до требуемого размера.Если изображение не содержит встроенного миниатюрного изображения, этот метод создает миниатюрное изображение путем масштабирования основного изображения.

...