Как повернуть изображение в .NET? - PullRequest
3 голосов
/ 10 февраля 2011

У меня есть проект asp.net 2010. Я пишу JPG в файловую систему. Затем я отображаю его в элементе управления изображением. Затем я использую этот код при нажатии кнопки, чтобы позволить пользователю повернуть его на 90 градусов.

string path = Server.MapPath(Image1.ImageUrl) ;

// creating image from the image url
System.Drawing.Image i = System.Drawing.Image.FromFile(path);

// rotate Image 90' Degree
i.RotateFlip(RotateFlipType.Rotate90FlipXY);

// save it to its actual path
i.Save(path);

// release Image File
i.Dispose();

Он вращается (я действительно могу наблюдать, что происходит в Windows Explorer). Но когда я снова запускаю приложение, и оно берет файл с пути, оно все равно отображает его в исходном виде.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2011

Это классическая проблема с файлами кэшированных браузером ресурсов. Элисон ответ один вариант. Другой вариант - изменить имя физического файла. Если вы «версии» файлов, то после каждого изменения, имя файла будет отличаться. Это означает, что вам нужно будет динамически ссылаться на путь к изображению, чтобы отобразить правильную версию, и вам понадобится какой-то способ определить имя файла для текущей версии. Тем не менее, он не позволяет браузеру отображать ранее кэшированный файл сразу после изменения, потому что это технически новый файл для браузера на этом этапе.

Если вы используете какой-либо источник данных (файлы XML или базу данных) для хранения метаданных изображений, вы можете добавить столбец «Версия» и сохранить простое целое число. С каждым изменением увеличивайте целочисленное значение и используйте новое значение в имени файла. Вы даже можете расширить это, сохранив предыдущие версии и разрешив своим пользователям «отменять» действия, скопировав более старую версию файла в новую версию. Это может потребовать более надежной реализации хранилища метаданных.

0 голосов
/ 11 февраля 2011

Попробуйте добавить фиктивную строку запроса в конец изображения, например "image1.jpv? V = 1".Это работает для предотвращения кэширования таких вещей, как файлы Javascript, и может сделать то же самое для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...