有没有简单的方法在.NET中以编程方式着色图像?基本上我们有一个黑白图像,需要在它上面加一层粉红色,并减少该层的不透明度,使图片以粉红色着色。
答案 0 :(得分:2)
你应该使用精彩的ImageMagick库。它有.NET绑定,所以没问题。
玩得开心! :)
答案 1 :(得分:1)
答案 2 :(得分:0)
让人想到的方法是使用Drawing包在给定颜色的图片上绘制一个矩形(您可以设置alpha)。它不是很有效,但是,通过缓存,即使在繁忙的服务器上也不会造成任何伤害。
答案 3 :(得分:0)
对于.net框架方法来说,这有点过于习惯..如果你找不到单一的方法调用解决方案..我发布了一些可以看的内容。
如果您有WPF,则可以在控件中加载图像。在它上面有另一个控件(带有粉红色填充和透明度的矩形)。 (使用Grid之类的布局,以便它们完全重叠) 接下来你可以
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);
所以你得到你在屏幕上看到的任何内容,写入内存中的Bitmap。然后你可以把它保存下来。 如果这不起作用,你可以使用WriteableBitmap类进行像素级控制并进行字节操作。
答案 4 :(得分:0)
我认为如果你想要对图像进行着色而不是仅仅在上面放置一个透明层,那将会更复杂一些。如果您想要与PhotoShop中的“屏幕”图层模式具有相同的效果,则必须使用新颜色的阴影替换图像中所有黑色阴影,以使白色部分保持白色。
最完全可以在.NET中完成,但我认为查看某种类型的库不会有什么坏处。