大图像的图像亮度c#

大图像的图像亮度c#,c#,image,brightness,C#,Image,Brightness,我用它来增加我的程序调整图像亮度的能力。此代码正常,但需要时间调整亮度(图像文件大小1.8mb)。当我尝试低质量的图像时,它会立即调整图像(图像文件大小100KB)。是否有任何有效的方法来调整图像的亮度。代码似乎在常规的位图上使用GetPixel和SetPixel。这是个坏主意,因为它太慢了 要操作位图的单个像素,必须将其锁定(Get/SetPixel在幕后进行),并且逐像素操作意味着对于1000x1000大小的图像,必须执行一百万次锁定/解锁操作。这会产生巨大的开销 方法一 避免这种情况的一种

我用它来增加我的程序调整图像亮度的能力。此代码正常,但需要时间调整亮度(图像文件大小1.8mb)。当我尝试低质量的图像时,它会立即调整图像(图像文件大小100KB)。是否有任何有效的方法来调整图像的亮度。

代码似乎在常规的
位图上使用
GetPixel
SetPixel
。这是个坏主意,因为它太慢了

要操作
位图的单个像素,必须将其锁定(Get/SetPixel在幕后进行),并且逐像素操作意味着对于1000x1000大小的图像,必须执行一百万次锁定/解锁操作。这会产生巨大的开销

方法一

避免这种情况的一种方法是使用函数锁定整个位图。现在我们可以在像素上循环并修改它们

关于此方法的两个注意事项:

  • 我们现在访问的是每个像素的原始字节,即每个通道分别:BGR或BGRA,取决于像素格式。这意味着通道在物理上与颜色方法的常用RGB/ARGB格式相反

  • 为了在物理位图像素行上循环,我们还需要在每行中添加一些,这会将行填充到4字节的倍数。也

对于一些示例,您可能需要浏览。特别要注意的是,它使用委托来允许灵活的操作

(请注意,有几篇文章使用2个甚至3个锁定位图,因为它们的目标是组合图像.)

方法二

另一种解决逐个锁定像素的开销的方法是现成的位图类,它们通过将自身作为一个整体进行锁定来提供帮助。这些都是我自己没有尝试过的例子

方法三

最后还有一种非常优雅的图像处理方法,它既简单又快速;同时,为了获得最佳效果,您还可以设置一个

它会让你改变亮度,伽马,色调,然后一些

唯一的缺点是,这仅限于某些固定的操作,因此您无法为其他花哨的东西(如或其他)创建自定义过滤器,尤其是那些需要处理相邻像素(例如模糊)的过滤器


但如果你只想改变亮度,这就是我的建议

代码似乎在常规
位图上使用
GetPixel
SetPixel
。这是个坏主意,因为它太慢了

要操作
位图的单个像素,必须将其锁定(Get/SetPixel在幕后进行),并且逐像素操作意味着对于1000x1000大小的图像,必须执行一百万次锁定/解锁操作。这会产生巨大的开销

方法一

避免这种情况的一种方法是使用函数锁定整个位图。现在我们可以在像素上循环并修改它们

关于此方法的两个注意事项:

  • 我们现在访问的是每个像素的原始字节,即每个通道分别:BGR或BGRA,取决于像素格式。这意味着通道在物理上与颜色方法的常用RGB/ARGB格式相反

  • 为了在物理位图像素行上循环,我们还需要在每行中添加一些,这会将行填充到4字节的倍数。也

对于一些示例,您可能需要浏览。特别要注意的是,它使用委托来允许灵活的操作

(请注意,有几篇文章使用2个甚至3个锁定位图,因为它们的目标是组合图像.)

方法二

另一种解决逐个锁定像素的开销的方法是现成的位图类,它们通过将自身作为一个整体进行锁定来提供帮助。这些都是我自己没有尝试过的例子

方法三

最后还有一种非常优雅的图像处理方法,它既简单又快速;同时,为了获得最佳效果,您还可以设置一个

它会让你改变亮度,伽马,色调,然后一些

唯一的缺点是,这仅限于某些固定的操作,因此您无法为其他花哨的东西(如或其他)创建自定义过滤器,尤其是那些需要处理相邻像素(例如模糊)的过滤器


但如果你只想改变亮度,这就是我的建议

您可以使用更低级的方法对其进行编辑。在处理非常小的图像时,与处理较大的图像(100KB对1.8MB)相比,您总是会有所不同。那么,您对这个问题的解决方案有什么期望呢?代码似乎在常规位图上使用了SetPixel。这是个坏主意,因为它太慢了。而是使用a)锁位或b)快速位图或c)颜色矩阵!这里和网上有很多例子。@TaW好的,谢谢。目前正在寻找锁具。你能把你的评论移到回答上来吗?这样我就可以标记我们的回答。你可以用一种更低级的方法来编辑它。在处理非常小的图像时,与处理较大的图像(100KB对1.8MB)相比,您总是会有所不同。那么,您对这个问题的解决方案有什么期望呢?代码似乎在常规位图上使用了SetPixel。这是个坏主意,因为它太慢了。而是使用a)锁位或b)快速位图或c)颜色矩阵!这里和网上有很多例子。@TaW好的,谢谢。目前正在寻找锁具。你能把你的评论移到回答上来吗?这样我就可以标记出我们的答案了