Динамическое уменьшение размера изображения, а также размера изображения в C#
У меня есть галерея изображений, созданная с помощью элемента управления повторителем. Повторитель привязывается внутри моего кода за файлом к таблице, содержащей различные пути к изображениям.
Изображения в моем репитере заполнены следующим образом
<img src='<%# Eval("PicturePath")' %>' height='200px' width='150px'/>
(или что-то в этом роде, я не помню точного синтаксиса)
Проблема в том, что иногда сами изображения огромны, поэтому время загрузки немного смешное. И для заполнения изображения размером 150x200 пикселей определенно не требуется файл размером 3 МБ.
Есть ли способ не только изменить размеры изображения, но и уменьшить размер файла?
Спасибо!
Ответов (3)3
Я бы порекомендовал создать обработчик, который может изменять размер изображений на лету и кодировать их в любом формате, который вам нравится ... вроде генератора миниатюр. Это потребует затрат ЦП на сервере, но вы можете кэшировать изображения и значительно снизить затраты на полосу пропускания ETC. Дайте мне посмотреть, смогу ли я найти ссылку на хорошую статью о чем-то похожем, которую я читал.
Вы можете посмотреть эту статью, это не та, которую я читал, но в ней есть некоторая информация о том, как вы можете это реализовать.
Вы можете попробовать любой из этих двух проектов на CodePlex.com , оба предлагают создание динамических изображений с кешированием.
Последний прямо от Microsoft.
Вы ищете метод GetThumbnailImage класса Image. Вы можете либо заранее сгенерировать миниатюрные изображения, либо создать изображение при первом обращении к нему и сохранить его на диск для последующего использования (поэтому первый доступ будет медленным, но последующие запросы будут быстрыми).