Posted by mfalac on
11/24/2009 6:28:23 AM
<cc1:GeneratedImage ID="ResizedImageGenerator" runat="server" ImageHandlerUrl="ResizeImageHandler.ashx">
<Parameters>
<cc1:ImageParameter Name="ImageUrl" Value="~/Images/Hiking.jpg" />
<cc1:ImageParameter Name="Width" Value="400" />
</Parameters>
</cc1:GeneratedImage>
<%@ WebHandler Language="VB" Class="ResizeImageHandler" %>
Imports System
Imports System.IO
Imports System.Drawing
Imports System.Web
Imports Microsoft.Web
Public Class ResizeImageHandler
Inherits ImageHandler
Public Sub New()
MyBase.ContentType = Imaging.ImageFormat.Jpeg
MyBase.EnableServerCache = True
End Sub
Public Overrides Function GenerateImage(ByVal parameters As System.Collections.Specialized.NameValueCollection) As Microsoft.Web.ImageInfo
'Get the parameters
If String.IsNullOrEmpty(parameters("ImageUrl")) OrElse (String.IsNullOrEmpty(parameters("Width")) AndAlso String.IsNullOrEmpty(parameters("Height"))) Then
Throw New ArgumentException("You must supply the ImageUrl parameter along with either the Width or Height parameters")
End If
Dim imageUrl As String = parameters("ImageUrl")
Dim imageFile As String = HttpContext.Current.Server.MapPath(imageUrl)
' Add the resize transform logic
Dim resizeTrans As New ImageResizeTransform
If Not String.IsNullOrEmpty(parameters("Width")) Then
resizeTrans.Width = Convert.ToInt32(parameters("Width"))
Else
resizeTrans.Height = Convert.ToInt32(parameters("Height"))
End If
MyBase.ImageTransforms.Add(resizeTrans)
If Not File.Exists(imageFile) Then
Throw New ArgumentException(String.Format("The file {0} could not be found", imageFile))
End If
Return New ImageInfo(File.ReadAllBytes(imageFile))
End Function
End Class