<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Drawing" %>
<script runat="server">
Public Sub ResizeImage(ByVal ImagePath As String, Optional ByVal Quality As Integer = 100, Optional ByVal ContainerHeight As Integer = -1, Optional ByVal ContainerWidth As Integer = -1)
Dim originalimg, thumb As System.Drawing.Image
Try
Dim Height As Integer
Dim Width As Integer
Dim client As New WebClient
Dim objStream As System.IO.Stream
objStream = client.OpenRead(ImagePath)
' Get the image stream
originalimg = System.Drawing.Image.FromStream(objStream)
If originalimg.Height <= ContainerHeight And originalimg.Width <= ContainerWidth Then
' image fits within container, use full image size
Height = ContainerHeight
Width = ContainerWidth
ElseIf originalimg.Height > ContainerHeight And originalimg.Width > ContainerWidth Then
' image height and width are both greater than container
If (originalimg.Height / ContainerHeight) > (originalimg.Width / ContainerWidth) Then
Height = ContainerHeight
Width = (ContainerHeight / originalimg.Height) * originalimg.Width
Else
Width = ContainerWidth
Height = (ContainerWidth / originalimg.Width) * originalimg.Height
End If
ElseIf originalimg.Width > ContainerWidth Then
' image height > container height
Width = ContainerWidth
Height = (ContainerWidth / originalimg.Width) * ContainerHeight
Else
' image width > container width
Height = ContainerHeight
Width = (ContainerHeight / originalimg.Height) * ContainerWidth
End If
thumb = MakeThumbnail(originalimg, Height, Width)
Dim codecEncoder As ImageCodecInfo = GetEncoder("image/jpeg")
Dim encodeParams As New EncoderParameters(1)
Dim qualityParam As New EncoderParameter(Imaging.Encoder.Quality, Quality)
encodeParams.Param(0) = qualityParam
thumb.Save(Response.OutputStream, codecEncoder, encodeParams)
originalimg.Dispose()
thumb.Dispose()
Catch ex As Exception
Throw New Exception("Error processing JPEG", ex)
End Try
End Sub
Function MakeThumbnail(ByVal Source_Img As System.Drawing.Image, ByVal height As Integer, ByVal width As Integer) As System.Drawing.Image
Try
Dim intOrginalWidth As Integer
Dim intOrginalHeight As Integer
Dim sngAspectRatio As Single
intOrginalWidth = Source_Img.Width
intOrginalHeight = Source_Img.Height
sngAspectRatio = intOrginalHeight / height
width = intOrginalWidth / sngAspectRatio
Dim thumb As System.Drawing.Image = New Bitmap(width, height)
Dim objGraphics As System.Drawing.Graphics
objGraphics = System.Drawing.Graphics.FromImage(thumb)
objGraphics.InterpolationMode = InterpolationMode.HighQualityBicubic
objGraphics.SmoothingMode = SmoothingMode.HighQuality
objGraphics.PixelOffsetMode = PixelOffsetMode.HighQuality
objGraphics.CompositingQuality = CompositingQuality.HighQuality
objGraphics.DrawImage(Source_Img, 0, 0, width, height)
Return thumb
Catch ex As Exception
Throw (New Exception("Error in MakeThumbnail", ex))
End Try
End Function
Function GetEncoder(ByVal mimeType As String) As ImageCodecInfo
Dim codecs() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
For Each codec As ImageCodecInfo In codecs
If codec.MimeType = mimeType Then
Return codec
End If
Next
End Function
Sub Page_Load(ByVal Src As Object, ByVal E As EventArgs)
Call ResizeImage("\\intranet_svr\Images\PhotoGallery\00001357.jpg", 100, 100, 100)
End Sub
</script>