arthurh88
asked on
ASP.NET VB, Resize my bitmap in memory?
Dim wc2 As New WebClient()
Dim originalData2 As Byte() = wc2.DownloadData(customurl )
Dim stream2 As New MemoryStream(originalData2 )
Dim Logo As New Bitmap(stream2)
What are the next lines of code to resize Logo so that it is a maximum of 400 pixels wide (if less than 400, leave alone), and a maximum of 100 pixels high (if less than 100 high, then leave alone)
Dim originalData2 As Byte() = wc2.DownloadData(customurl
Dim stream2 As New MemoryStream(originalData2
Dim Logo As New Bitmap(stream2)
What are the next lines of code to resize Logo so that it is a maximum of 400 pixels wide (if less than 400, leave alone), and a maximum of 100 pixels high (if less than 100 high, then leave alone)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Dim NewHeight As Integer = 0
Dim NewWidth As Integer = 0
Dim maxphotowidth As Integer = 450
Dim maxphotoheight As Integer = 100
' Takes a File Stream reference object and converts it to the appropriately sized byte stream
Dim OldImage As System.Drawing.Image
Dim ic As New ImageConverter
Dim OutputStream As New MemoryStream
' Create the new image from the Original
OldImage = System.Drawing.Image.FromS
'Determine what dimension is off by more
'400 x 348. deltawidth = 1.149
Dim Ratio As Double = MaxPhotoWidth / MaxPhotoHeight
Dim deltaWidth As Double = OldImage.Width - MaxPhotoWidth
Dim deltaHeight As Integer = OldImage.Height - MaxPhotoHeight
Dim scaleFactor As Double
deltaWidth = OldImage.Width / OldImage.Height
If (OldImage.Height <= MaxPhotoHeight And OldImage.Width <= MaxPhotoWidth) Then
' Dont stretch a smaller original
NewHeight = OldImage.Height
NewWidth = OldImage.Width
Else
' Resize the image maintaining the original image aspect ratio.
If deltaWidth < Ratio Then
'Scale by the height
scaleFactor = MaxPhotoHeight / OldImage.Height
Else
'Scale by the Width
scaleFactor = MaxPhotoWidth / OldImage.Width
End If
NewHeight = CInt(OldImage.Height * scaleFactor)
NewWidth = CInt(OldImage.Width * scaleFactor)
End If
'Create the new image
Dim NewImage As New System.Drawing.Bitmap(OldI
' Convert the image to a stream ready to save
OldImage.Dispose()
graphicImage.DrawImage(New