Redimensionar uma imagem em C#
-
Redimensionar uma imagem com a Classe
Bitmap
emC#
-
Redimensionar uma imagem com a função
Graphics.DrawImage()
emC#
- Conclusão
Neste tutorial, discutiremos métodos para redimensionar uma imagem em C#.
Levaremos você por todo o processo, desde o carregamento da imagem original até a salvamento da versão redimensionada.
Redimensionar uma imagem com a Classe Bitmap
em C#
A classe Bitmap
fornece muitos métodos para trabalhar com imagens em C#. A classe Bitmap
obtém os dados de pixel das imagens. Podemos redimensionar uma imagem inicializando o parâmetro Size
dentro do construtor da classe Bitmap
.
O exemplo de código a seguir mostra como redimensionar uma imagem com o construtor da classe Bitmap
em C#.
# cCopyusing System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image imgToResize, Size size) {
return (Image)(new Bitmap(imgToResize, size));
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
Este código demonstra o processo completo de redimensionamento de uma imagem usando a classe Bitmap
em C#. Vamos analisar como ele funciona.
Etapa 1: Carregar a Imagem Original
Primeiro, é necessário carregar a imagem original usando o método Image.FromFile
. Certifique-se de substituir "C:\\Images\\img1.jpg"
pelo caminho para o seu próprio arquivo de imagem.
# cCopystring path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Etapa 2: Converter a Imagem em um Bitmap
Em seguida, você converte a imagem carregada em um objeto Bitmap
. Esta etapa é necessária para realizar a operação de redimensionamento.
# cCopyBitmap imgBitmap = new Bitmap(img);
Etapa 3: Redimensionar a Imagem
Agora vem a parte do redimensionamento. A função ResizeImage
recebe o objeto Bitmap
e o tamanho desejado (new Size(200, 200)
) e retorna a imagem redimensionada.
# cCopyImage resizedImage = ResizeImage(imgBitmap, new Size(200, 200));
Etapa 4: Salvar a Imagem Redimensionada
Por fim, você pode salvar a imagem redimensionada em um arquivo usando o método Save
. Neste exemplo, a imagem redimensionada é salva como "resized.jpg"
. Você pode escolher o formato da imagem salva alterando a extensão do arquivo (por exemplo, .jpg
, .png
, .bmp
).
# cCopyresizedImage.Save("resized.jpg");
Redimensionar uma imagem com a função Graphics.DrawImage()
em C#
A função Graphics.DrawImage()
desenha uma imagem dentro de uma localização especificada com dimensões especificadas em C#. Com esse método, podemos eliminar muitas desvantagens de redimensionar uma imagem. O exemplo de código a seguir mostra como redimensionar uma imagem com a função Graphics.DrawImage()
em C#.
# cCopyusing System;
using System.Drawing;
namespace resize_image {
class Program {
public static Image resizeImage(Image image, int width, int height) {
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height,
GraphicsUnit.Pixel, wrapMode);
}
}
return (Image)destinationImage;
}
static void Main(string[] args) {
string path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Bitmap imgbitmap = new Bitmap(img);
Image resizedImage = resizeImage(imgbitmap, new Size(200, 200));
}
}
}
Vamos analisar como ele funciona.
Etapa 1: Carregar a Imagem Original
Primeiro, é necessário carregar a imagem original usando Image.FromFile
. Certifique-se de substituir "C:\\Images\\img1.jpg"
pelo caminho para o seu próprio arquivo de imagem.
# cCopystring path = "C:\\Images\\img1.jpg";
Image img = Image.FromFile(path);
Etapa 2: Criar um Bitmap de Destino
Crie um objeto Bitmap
de destino que irá armazenar a imagem redimensionada. Defina a sua resolução para corresponder à imagem original usando SetResolution
.
A função destinationImage.SetResolution()
mantém o dpi da imagem independentemente do seu tamanho real.
# cCopyvar destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
Passo 3: Redimensionar a Imagem
Agora, usamos Graphics.FromImage
para obter um objeto Graphics
associado ao Bitmap
de destino. Configuramos o modo de composição e qualidade para obter os melhores resultados.
# cCopyusing (var graphics = Graphics.FromImage(destinationImage)) {
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes()) {
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel,
wrapMode);
}
}
A propriedade graphics.CompositingMode = CompositingMode.SourceCopy
especifica que, quando uma cor é renderizada, ela substitui a cor de fundo.
A propriedade graphics.CompositingQuality = CompositingQuality.HighQuality
especifica que queremos apenas imagens de alta qualidade serem renderizadas.
A função wrapMode.SetWrapMode(WrapMode.TileFlipXY)
impede o aparecimento de fantasmas ao redor das bordas da imagem.
Passo 4: Salvar a Imagem Redimensionada
Por fim, você pode salvar a imagem redimensionada em um arquivo usando o método Save
. Neste exemplo, a imagem redimensionada é salva como "resized.jpg"
. Você pode escolher o formato da imagem salva alterando a extensão do arquivo (por exemplo, .jpg
, .png
, .bmp
).
# cCopyresizedImage.Save("resized.jpg");
Conclusão
Redimensionar imagens é uma tarefa comum no desenvolvimento de software e o C# oferece várias abordagens para isso. Neste artigo, focamos em redimensionar imagens usando a classe Bitmap
. Percorremos todo o processo, desde o carregamento da imagem original até a salvamento da versão redimensionada.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn