Criar Um Editor De Imagem VB.Net Introdução Tenho visto alguns filtros de imagem escritos em VB, mas a maioria são mal executadas, len...
Criar Um Editor De Imagem VB.Net

Introdução
Tenho visto alguns filtros de imagem escritos em VB, mas a maioria são mal executadas, lento ou apenas excessivamente complexa. Então, eu decidi criar uma classe simples que contém uma variedade de filtros e é fácil de usar.
Fundo
Originalmente, eu criei esta classe para tornar uma sombra em uma dica de ferramenta em forma personalizada que eu criei em minha verificação ortográfica. Um pouco entediado sobre a minha pausa, decidi expandir essa classe e cresceu rapidamente em seu próprio projeto.
Usando o código
Usando os filtros é tão fácil como ir:
Usando b Como New Bitmap ( " c: \ test.png " )
b.Filters.DropShadow (Color.Black, New Ponto ( 8 , 8 ), 4 )
b.save ( " c: \ test.png " , Imaging.ImageFormat.Png)
Fim Usando
O código acima irá abrir o arquivo c: \ test.png , aplique o
DropShadow
filtro e re-salva a imagem em relação ao arquivo original.
Mais detalhes sobre filtros específicos e suas opções são listadas mais adiante nesta seção.
O código só pode ser usado em um
bitmap
objeto, então se você quiser desenhar diretamente em umapintura
evento, você precisará primeiro render a um bitmap
objeto assim:Privado Sub Form_Paint ( ByVal sender Como Objeto , _
ByVal e como System.Windows.Forms.PaintEventArgs) Handles me . Pintura
' Criar um objeto de bitmap para desenhar em
Usando b Como New Bitmap ( 128 , 128 )
' Criar objeto uma gráfica para que pode tornar para o bitmap
Usando g = Graphics.FromImage (b)
' Faça gráficos bordas agradável e "suave"
g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
' Desenhe um círculo
g.DrawEllipse (Pens.Red, New Rectangle ( 10 , 10 , 108 , 108 ))
End Usando
' estática do círculo que empatou com o montante de 8
b.Filters. Estática ( 8 )
' Desenhe a saída para a forma
e.Graphics.DrawImage (b, New Ponto ( 0 , 0 ))
End Usando
End Sub
O resultado do código acima irá pintar o seguinte em seu formulário:

No total, há 10 filtros, que podem ser vistos nos projetos de teste. Os filtros e suas configurações são as seguintes:
' Alpha
' Faz com que a imagem translúcida pelo valor especificado
b.Filters.Alpha (Valor Como Byte )
' Montante (0 - 255)
" A quantidade de alfa a ser aplicado ao bitmap 0 = Transparente 255 = opaco
' AlphaMask
' Cria uma silhueta baseado no canal alfa de uma imagem
b.Filters.AlphaMask (Alphacolor Como cores, SolidColor Como em cores)
' Alphacolor
' A cor que os transparentes será no bitmap resultando
' SolidColor
' A cor que as seções sólidas será no resultando bitmap
' Brilho
' Faz o bitmap mais clara ou escura
b.Filters.Brightness (quantidade Como único )
' valor (-1 - 1)
' A quantidade de brilho para aplicar o bitmap
' (números negativos escurecem a imagem clarear positivo)
' DropShadow
' Adiciona uma sombra a uma imagem com alpha
b.Filters.DropShadow (ShadowColor Como cores, profundidade Como Point, BlurAmount Como Integer )
' ShadowColor
' A cor da sombra resultante
' profundidade
' Os xey deslocamentos para a profundidade sombra
' BlurAmount (2 +)
' Como turva a sombra aparecerá
' EdgeDetection
' Destaques bordas em preto e branco
b.Filters.EdgeDetection ()
" Emboss
" Adiciona um efeito de relevo para o bitmap
b.Filters.Emboss ()
' Fontify
' Cria uma imagem ASCII (representação da fonte) de uma imagem
b.Filters.Fontify (fonte Como Fonte, ColorCount Como Byte , ColorAlso Como Boolean )
' fonte
' Especifica a fonte a ser utilizada a imagem ASCII com
' ColorCount
' Especifica a quantidade de caracteres que serão utilizadas ao gerar a imagem final
' ColorAlso
' Se esse valor for true cada caractere na saída de imagem será colorida
' GausianBlur
' Aplica-se um borrão para o bitmap
b.Filters.GausianBlur (Valor Como Integer )
" Montante (2 +)
' Especifica a quantidade que a imagem ficará borrada em pixels
' GrayScale
' Converte o bitmap uma escala de cinza Imagem
b.Filters.GrayScale ()
' HSL
' Ajusta a matiz, saturação e luminância de um bitmap
b.Filters.HSL (matiz Como Único , sentou-se como único , lum Como único )
' matiz (0-359 mas pode ser qualquer número .. se 361 ou 721 é usado este é
" equivalente a 1, 362 ou 722 = 2, etc,
' NOTA: algumas pessoas preferem usar -180 a + 180 em vez)
' define a tonalidade da bitmap resultante (0 = sem alteração)
' sentou (-1 - 1 )
' define a saturação do bitmap resultante (0 = sem alteração)
' lum (-1 - 1)
' define a luminância do bitmap resultante (0 = sem alteração)
' Inverter
' Inverte as cores do objeto bitmap
b.Filters . Invert
' OilPainting
' Cria uma impressão de pintura a óleo artístico de uma imagem
b.Filters.OilPainting (Valor Como Integer , BleedTransparentEdges Como Boolean )
' Valor
' Especifica o tamanho do pincel para o óleo de pintura
' BleedTransparentEdges
' Também se aplica o efeito de pintura a óleo para o canal alfa
' estática
' mistura os pixels-se da imagem para produzir um efeito estático como
" (Embora nenhum real estático é adicionado :))
b.Filters. Estática (Valor Como Integer )
' Montante (0 +)
' A zona (em pixels) para trocar com outros pixels (0 = sem alteração)
' TwoTone
' Obtém a cor média de cada pixel e converte-lo para preto ou branco
b.Filters.TwoTone (Valor Como Byte )
' Valor
' O tollance usado para determinar se o pixel é preto ou branco
O Projeto de Teste
O projeto de teste inclui duas formas de teste. A forma que se abre quando você executar o projeto (foto abaixo) permite que você carregue um arquivo de imagem e, em seguida, especificar os filtros (e opções apropriadas para cada filtro) que você deseja aplicar.

Há também um teste simples que só mostra todos os filtros que são possíveis com opções pré-definidas (foto abaixo), o que pode ser acessada clicando no botão "Simple Test" no formulário principal.
