Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不遍历所有图片的情况下在C#中使图片变亮';s像素?_C#_Image_Drawing_Pixel_Raster - Fatal编程技术网

如何在不遍历所有图片的情况下在C#中使图片变亮';s像素?

如何在不遍历所有图片的情况下在C#中使图片变亮';s像素?,c#,image,drawing,pixel,raster,C#,Image,Drawing,Pixel,Raster,我对图片的亮度有问题。我知道我可以通过增加/减少像素值来实现这一点,但这不是我想要的。有人告诉我,有一种方法不需要遍历所有像素,而且速度更快。如何做到这一点?谢谢。要更改图片亮度,您必须始终更改每个像素(如果它不是基于矢量的图形)。我认为遍历所有像素应该是唯一的方法。 也许有一个框架可以帮你完成这项工作。或者你可以寻找一种快速算法,将像素矩阵组合成一个子像素。总而言之,有许多可能性。图像处理是一个复杂的课题 您可以在这里找到一些示例:您在System.Drawing代码中使用ColorMatri

我对图片的亮度有问题。我知道我可以通过增加/减少像素值来实现这一点,但这不是我想要的。有人告诉我,有一种方法不需要遍历所有像素,而且速度更快。如何做到这一点?谢谢。

要更改图片亮度,您必须始终更改每个像素(如果它不是基于矢量的图形)。我认为遍历所有像素应该是唯一的方法。 也许有一个框架可以帮你完成这项工作。或者你可以寻找一种快速算法,将像素矩阵组合成一个子像素。总而言之,有许多可能性。图像处理是一个复杂的课题


您可以在这里找到一些示例:

您在System.Drawing代码中使用ColorMatrix类以高度优化的方式应用颜色转换。直接支持亮度和对比度更改等效果。显示矩阵的外观。

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

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");
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表示

要使图像变暗,可以在其上应用黑色薄雾:

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");
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表示


是否要使用库?你找过一点吗?如果您使用WPF,我相信您可以做些什么。我使用的是windows窗体。也许可以在图片上覆盖一个半透明元素?@David my Thinks,
FillRectangle
,白色和alpha应该可以做到这一点。@Patryk windows窗体不是为此而设计的。查找处理此问题的外部库。。。