Pergunta

Existe alguma maneira simples de imagens através de programação colorize em .NET? Basicamente, temos uma imagem em preto e branco e necessidade de colocar uma camada de rosa digamos acima dele e reduzir a opacidade dessa camada para tornar a imagem colorizado em rosa.

Foi útil?

Solução

Você deve usar a ImageMagick biblioteca maravilhosa . Tem .NET ligações não há problema nenhum.

Divirta-se! :)

Outras dicas

A maneira que vem à mente é usando os pacotes de desenho para desenhar um retângulo sobre a imagem em uma determinada cor (você pode definir alfa). Não é muito eficiente, mas, com o cache, não faria mal nenhum, mesmo em um servidor ocupado.

Este é um pouco demasiado personalizado para um método .NET Framework .. Se você não consegue encontrar uma solução única chamada de método .. eu postar algo que poderia ser algo para olhar.

Se você tem um WPF, você pode carregar a imagem em um controle. Ter outro controle (retângulo com preenchimento de rosa e Transparência) em cima dela. (Use algo como uma grade de layout para que ambos se sobrepõem perfeitamente) Em seguida, você poderia

RenderTargetBitmap bmp = new RenderTargetBitmap( imageWidth,imageHeight, 
  DPIHoriz, DPIVert, 
  PixelFormats.Pbrga32);
 // if you don't want to make the controls 'visible' on screen, you need to trigger size calculations explicitly. 
grid.Measure(new Size(imageWidth, imageHeight));
grid.Arrange(new Rect(0,0, imageWidth, imageHeight);
bmp.Render(grid);

Assim que você conseguir tudo o que você vê na tela, escrito no Bitmap na memória. Você poderia, então, salve-off. Se isso não funcionar, você pode ir para o controle de nível de pixel com classe WriteableBitmap e fazer byte-de-obra.

Eu acho que vai ser um pouco mais complicado se você quer colorir uma imagem em vez do que simplesmente colocar uma camada de SMI-transparente por cima. Se você quer ter o mesmo efeito que o modo de camada "tela" em PhotoShop então você tem que substituir todos os tons preto na imagem com tons da nova cor para manter as partes brancas branco.

Pode mais definitivamente ser feito em .NET, mas eu suponho que não faria mal a olhar para uma biblioteca de algum tipo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top