Como Size
, Width
e Height
são Get()
propriedades de System.Drawing.Image
;
Como posso redimensionar um objeto de imagem em tempo de execução em c #?
No momento, estou apenas criando um novo Image
uso:
// objImage is the original Image
Bitmap objBitmap = new Bitmap(objImage, new Size(227, 171));
Respostas:
Isso executará um redimensionamento de alta qualidade:
wrapMode.SetWrapMode(WrapMode.TileFlipXY)
evita fantasmas nas bordas da imagem - o redimensionamento ingênuo mostra pixels transparentes além dos limites da imagem, mas espelhando a imagem, podemos obter uma amostra melhor (essa configuração é muito perceptível)destImage.SetResolution
mantém o DPI independentemente do tamanho físico - pode aumentar a qualidade ao reduzir as dimensões da imagem ou ao imprimirgraphics.CompositingMode
determina se os pixels de uma imagem de origem serão substituídos ou combinados com os pixels de fundo.SourceCopy
especifica que quando uma cor é renderizada, ela substitui a cor do plano de fundo.graphics.CompositingQuality
determina o nível de qualidade de renderização das imagens em camadas.graphics.InterpolationMode
determina como os valores intermediários entre dois pontos de extremidade são calculadosgraphics.SmoothingMode
especifica se as linhas, curvas e as bordas das áreas preenchidas usam suavização (também chamada antialiasing) - provavelmente só funciona em vetoresgraphics.PixelOffsetMode
afeta a qualidade da renderização ao desenhar a nova imagemManter a proporção é deixada como um exercício para o leitor (na verdade, acho que não é o trabalho dessa função fazer isso por você).
Além disso, este é um bom artigo que descreve algumas das armadilhas com o redimensionamento de imagens. A função acima cobrirá a maioria deles, mas você ainda precisa se preocupar em economizar .
fonte
Bitmap
é essencialmente apenas o nome da classe, você pode salvá-lo como qualquer tipo de arquivo que desejar.System.Drawing
e adicioneusing System.Drawing.Imaging;
Não tenho certeza do que é tão difícil nisso, faça o que estava fazendo, use o construtor Bitmap sobrecarregado para criar uma imagem redimensionada, a única coisa que estava faltando era uma conversão ao tipo de dados Image:
fonte
yourImage
antes de atribuí-lo à nova imagem?em esta pergunta , você vai ter algumas respostas, incluindo a minha:
fonte
Por que não usar o
System.Drawing.Image.GetThumbnailImage
método?Exemplo:
Fonte: http://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage.aspx
fonte
Você pode tentar net-vips , a ligação de C # para libvips . É uma biblioteca de processamento de imagens preguiçosa, de fluxo contínuo e orientada por demanda, para que possa executar operações como essa sem precisar carregar a imagem inteira.
Por exemplo, ele vem com um prático miniaturizador de imagens:
Ele também suporta corte inteligente, uma maneira de determinar de forma inteligente a parte mais importante da imagem e mantê-la focada durante o corte da imagem. Por exemplo:
Onde
owl.jpg
está uma composição descentralizada:Dá este resultado:
Primeiro, reduz a imagem para obter o eixo vertical para 128 pixels, depois corta para 128 pixels usando a
attention
estratégia. Este pesquisa na imagem recursos que possam chamar a atenção de um humano, vejaSmartcrop()
detalhes.fonte
Isso vai -
//////////////
fonte
fonte
Low
?Este código é o mesmo que postado em uma das respostas acima .. mas converterá pixel transparente em branco em vez de preto ... Obrigado :)
fonte
Na aplicação que fiz foi necessário criar uma função com várias opções. É muito grande, mas redimensiona a imagem, pode manter a proporção e cortar as bordas para retornar apenas o centro da imagem:
Para facilitar o acesso à função, é possível adicionar algumas funções sobrecarregadas:
Agora, os dois últimos booleanos são opcionais para definir. Chame a função assim:
fonte
Clique aqui http://bhupendrasinghsaini.blogspot.in/2014/07/resize-image-in-c.html
fonte
Este é o código que desenvolvi para um requisito específico, ou seja: o destino está sempre na proporção de paisagem. Isso deve lhe dar um bom começo.
fonte
Se você estiver trabalhando com um
BitmapSource
:Se você deseja um controle mais preciso sobre a qualidade, execute isso primeiro:
(O padrão é
BitmapScalingMode.Linear
equivalente aBitmapScalingMode.LowQuality
.)fonte
Eu uso o ImageProcessorCore, principalmente porque funciona .Net Core.
E tem mais opções, como converter tipos, cortar imagens e muito mais
fonte
Redimensione e salve uma imagem para caber na largura e altura, como uma tela, mantendo a imagem proporcional
fonte
Use a função abaixo com o exemplo abaixo para alterar o tamanho da imagem:
fonte
Você pode usar a estrutura Accord.NET para isso. Ele fornece alguns métodos diferentes de redimensionamento:
fonte
Nota: isso não funcionará com o ASP.Net Core porque o WebImage depende do System.Web, mas nas versões anteriores do ASP.Net eu usei esse trecho várias vezes e foi útil.
fonte