Files
tsl5/Imagen.vb
2026-05-14 09:52:12 +02:00

52 lines
2.2 KiB
VB.net

Imports System.Drawing
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.IO
Public Class Imagen
Public Shared Function ResizeImage(ByVal image As Image,
ByVal size As Size, Optional ByVal preserveAspectRatio As Boolean = True) As Image
Dim newWidth As Integer
Dim newHeight As Integer
If preserveAspectRatio Then
Dim originalWidth As Integer = image.Width
Dim originalHeight As Integer = image.Height
Dim percentWidth As Single = CSng(size.Width) / CSng(originalWidth)
Dim percentHeight As Single = CSng(size.Height) / CSng(originalHeight)
Dim percent As Single = If(percentHeight < percentWidth,
percentHeight, percentWidth)
newWidth = CInt(originalWidth * percent)
newHeight = CInt(originalHeight * percent)
Else
newWidth = size.Width
newHeight = size.Height
End If
Dim newImage As Image = New Bitmap(newWidth, newHeight)
Using graphicsHandle As Graphics = Graphics.FromImage(newImage)
graphicsHandle.InterpolationMode = InterpolationMode.HighQualityBicubic
graphicsHandle.DrawImage(image, 0, 0, newWidth, newHeight)
End Using
Return newImage
End Function
Public Shared Function ImagenAByteArray(Imagen As Image, ByVal format As ImageFormat, Optional Calidad As Long = 100) As Byte()
Dim jpgEncoder As ImageCodecInfo = ImageCodecInfo.GetImageEncoders().First(Function(x) x.FormatID = format.Guid)
Dim myEncoder As System.Drawing.Imaging.Encoder = System.Drawing.Imaging.Encoder.Quality
Dim myEncoderParameters As EncoderParameters = New EncoderParameters(1)
Dim myEncoderParameter As EncoderParameter = New EncoderParameter(myEncoder, Calidad)
'myEncoderParameters.Param.Append(myEncoderParameter)
myEncoderParameters.Param(0) = myEncoderParameter
'Dim converter As New ImageConverter
'Dim bytes As Byte() = converter.ConvertTo(Imagen, GetType(Byte()))
Dim ms As New MemoryStream
Imagen.Save(ms, jpgEncoder, myEncoderParameters)
Return ms.ToArray
End Function
End Class