Al desarrollar un sitio web, generar miniaturas es una función muy común y práctica. En el pasado, solo se podía lograr con la ayuda de componentes COM en ASP, pero ahora se puede implementar fácilmente en .NET usando la poderosa biblioteca de clases. framework El código completo se publica a continuación (con notas detalladas), consulte algunos artículos en Internet y contenido relacionado con .net SDK. Los cuatro métodos de generación se utilizan para cargar imágenes en QQROOM Network Home.
/// <resumen>
/// Generar miniaturas
/// </summary>
/// <param name="originalImagePath">Ruta de la imagen de origen (ruta física)</param>
/// <param name="thumbnailPath">Ruta en miniatura (ruta física)</param>
/// <param name="ancho">Ancho de miniatura</param>
/// <param name="altura">Altura de miniatura</param>
/// <param name="mode">Cómo generar miniaturas</param>
public static void MakeThumbnail (cadena originalImagePath, cadena miniaturaPath, int ancho, int alto, modo de cadena)
{
Imagen imagen original = Imagen.FromFile(originalImagePath);
int ancho = ancho;
int altura = altura;
int x = 0;
int y = 0;
int ow = imagen original.Width;
int oh = originalImage.Height
cambiar (modo)
{
case "HW"://Especifique la escala de altura y ancho (posiblemente deformada)
romper;
case "W"://Especifique ancho y alto en proporción
toheight = Imagen original.Altura * ancho/Imagenoriginal.Ancho;
romper;
case "H"://Especifique alto y ancho en proporción
towidth = originalImage.Width * height/originalImage.Height;
romper;
case "Cortar"://Especificar alto y ancho a cortar (sin deformación)
if((doble)Imagenoriginal.Ancho/(doble)Imagenoriginal.Alto > (doble)al ancho/(doble)alalto)
{
oh = imagen original.Altura;
ow = Imagen original. Altura * ancho / altura;
y = 0;
x = (Imagen original.Ancho - ow)/2;
}
demás
{
ow = imagen original.Ancho;
oh = imagen original.Ancho*alto/ancho;
x = 0;
y = (Imagen original.Altura - oh)/2;
}
romper;
por defecto :
romper;
}
//Crea una nueva imagen bmp
Mapa de bits de imagen = new System.Drawing.Bitmap(towidth,toheight);
//Crea un nuevo tablero de dibujo;
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//Establecer método de interpolación de alta calidad
;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High
//Establece alta calidad y baja velocidad para mostrar suavidad
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
//Borra el lienzo y rellénalo con un color de fondo transparente;
g.Clear(Color.Transparent);
//Dibuja la parte especificada de la imagen original en la posición y tamaño especificados
g.DrawImage(imagen original, nuevo rectángulo(0, 0, ancho, alto),
nuevo Rectángulo(x, y, ow,oh),
GraphicsUnit.Pixel);
intente
{
//Guardar la miniatura en formato jpg
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
captura (System.Exception e)
{
tirar e;
}
finalmente
{
imagen original.Dispose();
mapa de bits.Dispose();
g.Dispose();
}
}
Para conocer el método clave Graphics.DrawImage, consulte ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm