Ao desenvolver um site, gerar miniaturas é uma função muito comum e prática. No passado, só poderia ser alcançada com a ajuda de componentes COM em ASP, mas agora pode ser facilmente implementada em .NET usando a poderosa biblioteca de classes do. framework. O código completo é postado abaixo (com notas detalhadas), consulte alguns artigos na Internet e conteúdo relacionado ao SDK .net. Todos os quatro métodos de geração são usados para fazer upload de imagens no QQROOM Network Home.
///
/// Gerar miniaturas
///
/// Caminho da imagem de origem (caminho físico)
/// Caminho da miniatura (caminho físico)
/// Largura da miniatura
/// Altura da miniatura
/// Como gerar miniaturas
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, largura interna, altura interna, modo string)
{
Imagem originalImage = Image.FromFile(originalImagePath);
largura interna = largura;
altura interna = altura;
interno x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height
;
{
case "HW"://Especifique a escala de altura e largura (possivelmente deformada)
quebrar;
case "W"://Especifique largura e altura em proporção
toheight = originalImage.Height * largura/originalImage.Width;
quebrar;
case "H"://Especifique a altura e a largura em proporção
largura = originalImage.Width * altura/originalImage.Height;
quebrar;
case "Cortar"://Especifique a altura e largura para cortar (sem deformação)
if((double)originalImage.Width/(double)originalImage.Height > (double)towidth/(double)toheight)
{
oh = imagem original.Height;
ow = originalImage.Height*towidth/toheight;
y = 0;
x = (originalImage.Width - ow)/2;
}
outro
{
ow = originalImage.Width;
oh = originalImage.Width*altura/largura;
x = 0;
y = (imagemoriginal.Altura - oh)/2;
}
quebrar;
padrão :
quebrar;
}
//Cria uma nova imagem bmp
Imagem bitmap = new System.Drawing.Bitmap(towidth,toheight);
//Cria uma nova prancheta de desenho;
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//Definir método de interpolação de alta qualidade
;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//Definir alta qualidade e baixa velocidade para mostrar suavidade
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//Limpa a tela e preenche-a com uma cor de fundo transparente;
g.Clear(Color.Transparent);
//Desenha a parte especificada da imagem original na posição e tamanho especificados
g.DrawImage (imagem original, novo retângulo (0, 0, largura, altura),
novo retângulo (x, y, ai, oh),
GraphicsUnit.Pixel);
tente
{
//Salva a miniatura no formato jpg
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
pegar (System.Exception e)
{
jogue e;
}
finalmente
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
Para o método chave Graphics.DrawImage, consulte ms-help://MS.NETFrameworkSDKv1.1.CHS/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic11.htm