2008-09-29 97 views
1

有没有简单的方法在.NET中编程着色图像?基本上我们有一个黑白图像,需要在其上面涂上一层粉红色,并减少该图层的不透明度,以使图片变成粉色。在.NET中“着色”图像

回答

2

您应该使用精彩的ImageMagick库。它有.NET绑定,所以没有问题。

玩得开心! :)

0

想到的方法是使用Drawing包在给定颜色的图片上绘制矩形(可以设置为alpha)。这不是非常有效,但通过缓存,即使在繁忙的服务器上也不会造成任何伤害。

0

这是一个有点太为定制.NET框架的方法。如果你不能找到一个方法调用的解决方案。我发布了一些可以看的东西。

如果你有一个WPF,你可以在控件中加载图像。在它上面有另一个控件(带有粉红色填充和透明度的矩形)。 (使两者完美地重叠使用类似网格布局) 接下来,你可以

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); 

所以,你得到任何你在屏幕上看到,写入内存中的位图。你可以保存它。 如果这不起作用,您可以使用WriteableBitmap类进行像素级控制,并进行字节分配。

0

我认为如果您想为图片着色而不是将smi透明的图层置于顶部,会更复杂一些。如果您想要在PhotoShop中具有与“屏幕”图层模式相同的效果,则必须将图像中的所有黑色阴影替换为新颜色的阴影,以使白色部分保持白色。

它最能定义在.NET中完成,但我认为它不会伤害到某种类型的库。