Hola compañeros , me he animado hacer una dll en c# después de ver el tutorial de pabloko ( gracias ) , la dll sirve para redimensionar y convertir de un formato a otro imagenes , la redimension mantiene una relaccion tamaño aspecto , osea que rstringe proporcines para no deformar la imagen , la llamada solo tiene una funcion:
ResizeConvertImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, string format, int OnlyResizeIfWider)
string OriginalFile = archivo de salida
string NewFile = Archivo de destino , debemos proporcionar ruta completa nombre del archivo y nueva extensión en caso de cambio.
int NewWidth = Nuevo tamaño en anchura
int MaxHeight = la altura dependerá del ancho , podemos fijar un maximo pero entoces cambiara newwidth al valor que no deforme la imagen.
string format = Formato de salida de la imagen , formatos soportados : "Bmp","Emf","Exif","Gif","Ico","Jpeg","Png","Tiff","Wmf".
int OnlyResizeIfWider= valor 1 = solo redimensiona si es para mayor , 0 = redimensiona siempre.
Codigo fuente de la dll:
Es la primera vez que hago algo con C# y gracias a que pabloko nos lo pone fácil , así que supongo que el código tendrá mejoras y errores para parar un carro ( alguna vez hay que empezar) , espero vuestros comentarios y sugerencias , saludos
Descarga:
ResizeConvertImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, string format, int OnlyResizeIfWider)
string OriginalFile = archivo de salida
string NewFile = Archivo de destino , debemos proporcionar ruta completa nombre del archivo y nueva extensión en caso de cambio.
int NewWidth = Nuevo tamaño en anchura
int MaxHeight = la altura dependerá del ancho , podemos fijar un maximo pero entoces cambiara newwidth al valor que no deforme la imagen.
string format = Formato de salida de la imagen , formatos soportados : "Bmp","Emf","Exif","Gif","Ico","Jpeg","Png","Tiff","Wmf".
int OnlyResizeIfWider= valor 1 = solo redimensiona si es para mayor , 0 = redimensiona siempre.
Codigo fuente de la dll:
using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;
namespace ImageConverResizer
{
internal static class UnmanagedExports
{
[DllExport("ResizeConvertImage", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static void ResizeConvertImage(string OriginalFile, string NewFile, int NewWidth, int MaxHeight, string format, int OnlyResizeIfWider)
{
System.Drawing.Image Image = System.Drawing.Image.FromFile(OriginalFile);
// Prevent using images internal thumbnail
Image.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
Image.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
if (OnlyResizeIfWider == 1)
{
if (Image.Width <= NewWidth)
{
NewWidth = Image.Width;
}
}
int NewHeight = Image.Height * NewWidth /Image.Width;
if (NewHeight > MaxHeight)
{
// Resize with height instead
NewWidth = Image.Width * MaxHeight / Image.Height;
NewHeight = MaxHeight;
}
System.Drawing.Image newImage = Image.GetThumbnailImage(NewWidth, NewHeight, null, IntPtr.Zero);
var formatFile = System.Drawing.Imaging.ImageFormat.Bmp;
if (format == "Bmp") { formatFile = System.Drawing.Imaging.ImageFormat.Bmp; }
else if (format == "Emf") { formatFile = System.Drawing.Imaging.ImageFormat.Emf; }
else if (format == "Exif") { formatFile = System.Drawing.Imaging.ImageFormat.Exif; }
else if (format == "Gif") { formatFile = System.Drawing.Imaging.ImageFormat.Gif; }
else if (format == "Ico") { formatFile = System.Drawing.Imaging.ImageFormat.Icon; }
else if (format == "Jpeg") { formatFile = System.Drawing.Imaging.ImageFormat.Jpeg; }
else if (format == "Png") { formatFile = System.Drawing.Imaging.ImageFormat.Png; }
else if (format == "Tiff") { formatFile = System.Drawing.Imaging.ImageFormat.Tiff; }
else if (format == "Wmf") { formatFile = System.Drawing.Imaging.ImageFormat.Wmf; }
// Clear handle to original file so that we can overwrite it if necessary
Image.Dispose();
// Save resized picture
newImage.Save(NewFile,formatFile);
}
}
}
Es la primera vez que hago algo con C# y gracias a que pabloko nos lo pone fácil , así que supongo que el código tendrá mejoras y errores para parar un carro ( alguna vez hay que empezar) , espero vuestros comentarios y sugerencias , saludos
Descarga: