Función que recibe una imagen y modifica las propiedades, escala de grises, resolución, calidad, etc y retorna como un arreglo de Bytes
Es común que al momento de trabajar con imágenes necesitemos realizar un ajuste de calidad, la resolución o escala de grises, respecto a este problema aqui tenemos una funcion que diseñe algunos años con varios bloques comentados segun la necesidad de cada quien, en su momento utilice cada uno de estos bloques y los fui comentando solamente :P
Public Shared Function
BmpToBytes_MemStream(ByVal img As Image) As Byte()
'Esta configuracion reduce el tamaño en mas
de un 70% del PDF
'----------------------------------------------------------------------
'Dim imagen
As New Bitmap(782, 1070, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.Default
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.AntiAlias
'MOD:2 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un 60%
'-----------------------------------------------------------------------
'Dim imagen
As New Bitmap(782, 1070, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode = Drawing2D.PixelOffsetMode.Default
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.High
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
'MOD:3 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un 55%
'-------------------------------------------------------------
'Dim imagen
As New Bitmap(782, 1070, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.Half
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.High
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
'MOD:4 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un 55%
'--------------------------------------------------------------------
'Dim imagen
As New Bitmap(782, 1070, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.HighQuality
'new_g.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.High
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
'MOD:5 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un ?%
'-------------------------------------------------------------------
'Dim imagen
As New Bitmap(782, 1070, System.Drawing.Imaging.PixelFormat.Format64bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.HighQuality
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.High
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
'MOD:6 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un ?%
'---------------------------------------------------------------------------------------
'Dim imagen
As New Bitmap(950, 1300, System.Drawing.Imaging.PixelFormat.Format64bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.HighQuality
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.High
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
'MOD:7 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un ?%
'---------------------------------------------------------------
'ESTA ES LA
IDEAL
Dim
imagen As New Bitmap(1024, 1402, System.Drawing.Imaging.PixelFormat.Format64bppPArgb)
Dim
new_g As Graphics
= Graphics.FromImage(imagen)
new_g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
new_g.InterpolationMode =
System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
new_g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
'MOD:8 Esta confiracion mejorara la calidad y aumentará el
tamaño del los archivos PDF,
'reduce el tamaño en un ?%
'----------------------------------------------------------
'Dim imagen
As New Bitmap(1600, 2190, System.Drawing.Imaging.PixelFormat.Format64bppPArgb)
'Dim new_g As
Graphics = Graphics.FromImage(imagen)
'new_g.PixelOffsetMode
= Drawing2D.PixelOffsetMode.HighQuality
'new_g.InterpolationMode
= System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
'new_g.SmoothingMode
= Drawing2D.SmoothingMode.HighQuality
new_g.DrawImage(img, 0, 0,
imagen.Width, imagen.Height)
img = imagen
Dim
sTemp1 As String
sTemp1 = System.IO.Path.GetTempFileName()
System.IO.File.Delete(Path.GetTempFileName())
Dim fs As New FileStream(sTemp1, FileMode.OpenOrCreate)
img.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
fs.Position = 0
Dim
imgLength As Integer
= CInt(fs.Length)
Dim bytes(0 To
imgLength - 1) As Byte
fs.Read(bytes, 0, imgLength)
fs.Close()
'Eliminar el archivo temporal para no saturar el disco duro
System.IO.File.Delete(Path.GetTempFileName())
Return bytes
End Function