Динамическое уменьшение размера изображения, а также размера изображения в C#

У меня есть галерея изображений, созданная с помощью элемента управления повторителем. Повторитель привязывается внутри моего кода за файлом к ​​таблице, содержащей различные пути к изображениям.

Изображения в моем репитере заполнены следующим образом

<img src='<%# Eval("PicturePath")' %>' height='200px' width='150px'/> 

(или что-то в этом роде, я не помню точного синтаксиса)

Проблема в том, что иногда сами изображения огромны, поэтому время загрузки немного смешное. И для заполнения изображения размером 150x200 пикселей определенно не требуется файл размером 3 МБ.

Есть ли способ не только изменить размеры изображения, но и уменьшить размер файла?

Спасибо!

Ответов (3)

Решение

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

Вы можете посмотреть эту статью, это не та, которую я читал, но в ней есть некоторая информация о том, как вы можете это реализовать.

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

Последний прямо от Microsoft.

Вы ищете метод GetThumbnailImage класса Image. Вы можете либо заранее сгенерировать миниатюрные изображения, либо создать изображение при первом обращении к нему и сохранить его на диск для последующего использования (поэтому первый доступ будет медленным, но последующие запросы будут быстрыми).