Я создаю обычную галерею в ASP.NET, но у меня мало опыта создания миниатюр. Я знаю алгоритмы и метод GetThumbnailImage, но моя проблема находится где-то в другом месте - в настоящее время я показываю изображения (просто измененные) с помощью элемента управления ImageButton. И в этом-то и дело - я понятия не имею, как подключить образ «thumbnailed» к свойству ImageUrl. Возможно ли это, и если да, то как? Или я должен использовать другой контроль? Спасибо за любые предложения!Каков наилучший способ отображения эскизов в ASP.NET?
ответ
Вы можете создать HttpHandler, который обрабатывает запросы изображений и возвращает миниатюры (или делает все, что вам нужно на изображениях).
Всякий раз, когда вы делаете графический материал в ASP.NET, имейте в виду, что почти все из System.Drawing является оболочкой для GDI + и thetrefore хранит ссылки на неуправляемой памяти, которая должна быть утилизированы (используйте using
заявление) , Это справедливо даже для простых классов, таких как StringFormat и т. Д.
Похоже, вам нужно настроить HttpHandler, который создаст измененное изображение и, возможно, также будет кэшировать его на диск, чтобы сохранить необходимость воссоздать миниатюру на каждом запрос.
Так, например:
<asp:ImageButton ID="ImageButton1" ImageUrl="~/ImageHandler.ashx?ImageId=123" runat="server />
Вы бы тогда обработчик:
namespace MyProject
{
public class ImageHandler : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
// 1. Get querystring parameter
// 2. Check if resized image is in cache
// 3. If not, create it and cache to disk
// 5. Send the image
// Example Below
// -------------
// Get ID from querystring
string id = context.Request.QueryString.Get("ImageId");
// Construct path to cached thumbnail file
string path = context.Server.MapPath("~/ImageCache/" + id + ".jpg");
// Create the file if it doesn't exist already
if (!File.Exists(path))
CreateThumbnailImage(id);
// Set content-type, content-length, etc headers
// Send the file
Response.TransmitFile(path);
}
public virtual bool IsReusable
{
get { return true; }
}
}
}
Вы бы также должны установить это в web.config
<system.web>
<httpHandlers>
<add verb="*" path="ImageHandler.ashx" type="MyProject.ImageHandler, MyProject"/>
</httpHandlers>
</system.web>
Этого должно быть достаточно, чтобы вы начали. Вам нужно будет изменить метод ProcessRequest для создания миниатюры, но вы упомянули, что уже позаботились об этом. Вам также необходимо убедиться, что вы правильно настроили заголовки при передаче файла в браузер.
Малой модификацией ... вам нужно вызвать context.Response.TransmitFile (путь); –
Http-обработчик - это путь.
Другое примечание о производительности: манипулирование изображениями является дорогостоящим относительно дискового пространства, как с точки зрения памяти, так и с точки зрения процессора. Поэтому генерация миниатюры из полного изображения - это то, что вы хотите сделать только один раз для каждого полного изображения. Лучшее время для этого - это, вероятно, в то время, когда изображение загружается, особенно если вы покажете несколько из них на одной странице.
- 1. Каков наилучший способ отображения комментариев в ASP.NET?
- 2. Каков наилучший способ отображения иерархии вариантов в приложении ASP.net Forms?
- 3. Каков наилучший способ отображения изображений в Android?
- 4. Каков наилучший способ отображения видеопотока в PyQt4?
- 5. Каков наилучший способ отображения HTML в Flex?
- 6. Каков наилучший способ отображения сообщения обмена на веб-странице ASP.net?
- 7. Каков наилучший способ отображения выпадающего меню?
- 8. Каков наилучший способ отображения карты на Android?
- 9. JavaFX: каков наилучший способ отображения простого сообщения?
- 10. AngularJs - Каков наилучший способ отображения кнопок динамически?
- 11. Каков наилучший способ зеркального отображения сервера БД?
- 12. Каков наилучший способ отображения языкового индекса валюты?
- 13. Каков наилучший способ отображения результата этого массива
- 14. Каков наилучший способ отображения html через java
- 15. Каков наилучший способ отображения встроенных двух абзацев?
- 16. MVC2 Каков наилучший способ отображения таблицы
- 17. Каков наилучший способ публичного отображения электронной почты?
- 18. Каков наилучший способ блокировки кеша в asp.net?
- 19. Каков наилучший способ сохранить UICulture в ASP.NET?
- 20. Каков правильный способ создания эскизов?
- 21. Каков наилучший способ отображения сообщения о статусе в WPF?
- 22. ASP.NET - Каков наилучший способ блокировать использование приложения?
- 23. Каков наилучший способ минимизировать созданный ASP.NET Javascript?
- 24. Каков наилучший способ размещения WCF и ASP.NET?
- 25. Каков наилучший способ локализации приложения asp.net?
- 26. Каков наилучший способ размещения приложения ASP.NET MVC6
- 27. Каков наилучший способ отображения повторяющихся кодовых блоков в vb.net?
- 28. Каков наилучший способ сохранения/отображения изображений? (не blob vs. txt)
- 29. Каков наилучший способ отображения xml-информации на веб-странице?
- 30. Каков наилучший способ отображения данных в шаблоне в Django?
Большое спасибо, я попробую! – jkottnauer
Убедитесь, что вы кешируете изображения, потому что это, вероятно, не будет масштабировать все это хорошо ... –
Вправо. Кэширование не слишком динамичное, но «сложное вычисление» в ASP.NET обычно является хорошей идеей ... – Lucero