我用这个link来增加我的程序调整图像亮度的能力。此代码是可以的,但需要时间调整亮度(图像文件大小1.8mb)。当我尝试较低质量的图像时,它会立即调整图像(图像文件大小为100KB)。是否有任何有效的方法来调整图像的亮度。大图像的图像亮度c#
0
A
回答
2
该代码似乎使用GetPixel
和SetPixel
定期Bitmaps
。这是一个坏主意,因为它太慢了。
要操纵Bitmap
的单个像素,必须锁定它(Get/SetPixel在幕后执行),并以像素为单位进行操作,这意味着对于1000x1000大小的图像,一百万次锁定/解锁操作必须是执行。这造成了巨大的开销。
方法来避免这一
一种方法是锁定与LockBits
功能整个位图。现在我们可以遍历像素并修改它们。有关此方法的
两个附注:
我们现在访问是每个像素的原始字节,即每个信道单独:要么BGR或BGRA,根据像素格式。这意味着通道是与Color方法的通常RGB/ARGB格式物理相反。
对于一些例子,你可能想浏览过some of these posts。请特别注意this one,它使用委托来实现灵活的操作!
(请注意,有几个职位使用2个或甚至3锁定位图,因为他们瞄准的合成图像。)
方法二
另一种方式来解决锁定一个像素的开销一个是现成的位图类,通过将自己锁定为一个整体来提供帮助。 Here和here是我没有尝试自己的例子。
方法三
最后有图像处理,这既是相当简单和真快一个非常优雅的方法;也专业制作以获得最佳效果:您可以设置一个ColorMatrix
。
它可以让你改变亮度,伽马,色调,然后一些。 Here is a very nice introduction。
唯一的缺点是,这仅限于一些固定的操作,所以您不能为其他奇特的东西创建自定义过滤器,如photoshop-type layer modes或其他,特别是那些需要处理相邻像素的过滤器。模糊..
但是,如果你想要的只是改变亮度,这是我会推荐!
相关问题
- 1. Open GL +图像亮度+保存图像
- 2. matlab - 图像中的亮度
- 3. 图像处理 - 亮度和对比度
- 4. 八度显示低亮度图像
- 5. GDIPlus ::位图亮肤图像C++
- 6. 如何控制图像的亮度?
- 7. 使用html5/CSS/JS的图像亮度
- 8. L * u * v *增加图像的亮度?
- 9. 确定图像整体亮度
- 10. 重新着色图像保持亮度
- 11. Flex:如何调整图像控件内部图像的对比度/亮度?
- 12. 如何缩放图像中的像素以调整亮度?
- 13. 调整图像大小后放大图像内的图像
- 14. C#WPF图像加载像进度条
- 15. C#创建梯度图像
- 16. CSS背景图像+跨度图像整个大小的DIV
- 17. 虽然插入图像检查图像的大小和高度
- 18. 生成树/图形的漂亮图像
- 19. 图像地图中的高亮矩形
- 20. 时间推移图像的亮度/直方图规范化
- 21. PIL:创建图像颜色亮度的一维直方图?
- 22. Google Python图像库 - 如何根据图像宽度调整图像大小?
- 23. 如何使用jQuery的图像的亮度和对比度
- 24. 图像缩略图,最大宽度和最大高度 - onmouseover,以某种方式查看更大的图像
- 25. Open GL:更改图像的亮度和对比度
- 26. 更改EmguCV中图像的亮度/对比度
- 27. 更改图像部分的亮度和对比度
- 28. 结合层的色度与图像亮度
- 29. 如何调整图像的亮度和对比度?
- 30. Java游戏:更改图像的亮度或透明度
您可以使用更低级别的方法对其进行编辑。 http://www.vcskicks.com/fast-image-processing.php – leAthlon
与大型图像(100 kB vs 1.8 MB)相比,您在处理非常小的图像时总会有所不同。那么你对这个问题的解决方案有什么期望? – Fildor
该代码似乎在常规位图上使用SetPixel。这是一个糟糕的主意,因为它太慢了。而是使用a)LockBits或b)FastBitmap或c)ColorMatrix!大量的例子在这里和网络.. – TaW