Veja como é fácil redimensionar imagens usando C# e, o mais importante: Proporcionalmente!
Existem alguns momentos que, enquanto desenvolvendo um projeto, temos que parar de fazer o que estamos acostumados (brincar com classes e acesso a banco) para que possamos fazer algo que nunca fizemos ou que não fazemos com frequência. No meu caso é edição de imagens.
O código abaixo é muito simples os poucos comentários que tem (em inglês) podem te dar uma idéia do que está acontecendo. De qualquer modo, o único trabalho que você vai ter vai ser copiar o código e colar no seu projeto. Daí você só vai precisar de fazer a chamada de maneira correta e, voilà! Imagem redimensionada proporcionalmente!!
public static void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider) { Image fullsizeImage = Image.FromFile(originalFile); // Prevent using images internal thumbnail fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone); fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone); if (onlyResizeIfWider) { if (fullsizeImage.Width <= newWidth) { newWidth = fullsizeImage.Width; } } int newHeight = fullsizeImage.Height * newWidth / fullsizeImage.Width; if (newHeight > maxHeight) { // Resize with height instead newWidth = fullsizeImage.Width * maxHeight / fullsizeImage.Height; newHeight = maxHeight; } Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero); // Clear handle to original file so that we can overwrite it if necessary fullsizeImage.Dispose(); // Save resized picture newImage.Save(newFile); }
Só lembre-se de salvar as imagens em uma pasta com as permissões de leitura e escrita para evitar erros.
via DZone snippets
public static void ResizeImage(string originalFile, string newFile, int newWidth, int maxHeight, bool onlyResizeIfWider) { Image fullsizeImage = Image.FromFile(originalFile); // Prevent using images internal thumbnail fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone); fullsizeImage.RotateFlip(RotateFlipType.Rotate180FlipNone); if (onlyResizeIfWider) { if (fullsizeImage.Width <= newWidth) { newWidth = fullsizeImage.Width; } } int newHeight = fullsizeImage.Height * newWidth / fullsizeImage.Width; if (newHeight > maxHeight) { // Resize with height instead newWidth = fullsizeImage.Width * maxHeight / fullsizeImage.Height; newHeight = maxHeight; } Image newImage = fullsizeImage.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero); // Clear handle to original file so that we can overwrite it if necessary fullsizeImage.Dispose(); // Save resized picture newImage.Save(newFile); }