我的图片变亮了。我知道我可以通过增加/减少像素值来做到这一点,但这不是我想要的。有人告诉我,有一种方法不需要迭代所有像素,而且速度要快得多。这该怎么做?谢谢。

最佳答案

要使图像变亮,可以在其上应用白色雾度:

Bitmap bmp = new Bitmap(@"Image.png");
Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height);
alpha = 128
using (Graphics g = Graphics.FromImage(bmp)) {
    using (Brush cloud_brush = new SolidBrush(Color.FromArgb(alpha, Color.White))) {
        g.FillRectangle(cloud_brush, r);
    }
}
bmp.Save(@"Light.png");

alpha值的范围可以从0到255。0表示效果是完全透明的,从而生成原始图像。 255表示效果是完全不透明的,从而产生纯白色矩形。在这里,效果以128表示。

c# - 如何在不实际遍历所有图片像素的情况下使C#中的图片变亮?-LMLPHP

要使图像变暗,可以在其上应用黑色雾度:
Bitmap bmp = new Bitmap(@"Image.png");
Rectangle r = new Rectangle(0, 0, bmp.Width, bmp.Height);
alpha = 128
using (Graphics g = Graphics.FromImage(bmp)) {
    using (Brush cloud_brush = new SolidBrush(Color.FromArgb(alpha, Color.Black))) {
        g.FillRectangle(cloud_brush, r);
    }
}
bmp.Save(@"Dark.png");

alpha值的范围可以从0到255。0表示效果是完全透明的,从而生成原始图像。 255表示效果是完全不透明的,从而产生一个实心的黑色矩形。在这里,效果以128表示。

c# - 如何在不实际遍历所有图片像素的情况下使C#中的图片变亮?-LMLPHP

关于c# - 如何在不实际遍历所有图片像素的情况下使C#中的图片变亮?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16522438/

10-11 22:29
查看更多