Tengo una aplicación ASP.NET MVC 2 orientada a .NET 4 que necesita para poder cambiar el tamaño de las imágenes sobre la marcha y escribirlas en la respuesta.¿Está bien utilizar ensamblajes WPF en una aplicación web?
Tengo un código que hace esto y funciona. Estoy usando System.Drawing.dll.
Sin embargo, quiero mejorar mi código para que no solo cambie el tamaño de la imagen, sino que también la baje de 24 bits hacia abajo a una escala de grises de 4 bits. No pude, por mi vida, encontrar un código sobre cómo hacer esto con System.Drawing.dll.
Pero sí encontré un montón de cosas de WPF. Este es mi código de trabajo/muestra (se ejecuta en LinqPad).
// Load the original 24 bit image
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = new Uri(@"C:\Temp\Resized\18_appa2_015.png", UriKind.Absolute);
//bitmapImage.DecodePixelWidth = 600;
bitmapImage.EndInit();
// Create the destination image
var formatConvertedBitmap = new FormatConvertedBitmap();
formatConvertedBitmap.BeginInit();
formatConvertedBitmap.Source = bitmapImage;
formatConvertedBitmap.DestinationFormat = PixelFormats.Gray4;
formatConvertedBitmap.EndInit();
// Encode and dump the image to disk
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(formatConvertedBitmap));
using (var fileStream = File.Create(@"C:\Temp\Resized\18_appa2_015_s2.png"))
{
encoder.Save(fileStream);
}
Se utiliza System.Xaml.dll, WindowsBase.dll, PresentationCore.dll y PresentationFramework.dll. Los espacios de nombres utilizados son: System.Windows.Controls, System.Windows.Media y System.Windows.Media.Imaging.
¿Hay algún problema al utilizar estos espacios de nombres en mi aplicación web? No parece correcto.
Si alguien sabe cómo reducir la profundidad de bits sin todas estas cosas de WPF (que apenas entiendo, por cierto) estaría encantado de ver eso también.
Voy a probar esto ahora mismo y ver cómo funciona. – Chris
Funcionó. No se quejó de los hilos ni nada. Marcaré su respuesta como la respuesta, ya que proporcionó esta información adicional. – Chris