使用c调整位图图像亮度/对比度
发布时间:2020-12-16 09:28:08 所属栏目:百科 来源:网络整理
导读:使用c调整图像亮度/对比度,而不使用任何其他第三方库或依赖性 解决方法 图像亮度为 here(死链接) – 使用RGB值的平均值并移动它们. 对比度为here(死链接),也提供其他语言解决方案. 编辑链接已死: Jerry Coffin在下面给出的答案涵盖了相同的主题,并且链接仍
使用c调整图像亮度/对比度,而不使用任何其他第三方库或依赖性
解决方法
图像亮度为
here(死链接) – 使用RGB值的平均值并移动它们.
对比度为here(死链接),也提供其他语言解决方案. 编辑链接已死: Jerry Coffin在下面给出的答案涵盖了相同的主题,并且链接仍然存在. 但是,要调整亮度,可以为图像的R,G,B字段添加一个常量值.确保使用饱和数学 – 不允许值低于0或高于您的位深度允许的最大值(24位颜色为8位) RGB_struct color = GetPixelColor(x,y); size_t newRed = truncate(color.red + brightAdjust); size_t newGreen = truncate(color.green + brightAdjust); size_t newBlue = truncate(color.blue + brightAdjust); 相比之下,我从this website采取并略微修改了代码: float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); RGB_struct color = GetPixelColor(x,y); size_t newRed = truncate((size_t)(factor * (color.red - 128) + 128)); size_t newGreen = truncate((size_t)(factor * (color.green - 128) + 128)); size_t newBlue = truncate((size_t)(factor * (color.blue - 128) + 128)); 其中truncate(int value)确保8位颜色的值保持在0到255之间.请注意,许多CPU具有在一个周期内执行此操作的内部函数. size_t truncate(size_t value) { if(value < 0) return 0; if(value > 255) return 255; return value; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 是否不可能动态使用泛型?
- OURS-270RP-WinCE-5.0-电机模块不能打开设备
- ruby-on-rails – Rails助手在哪里可用?
- 如何解决XML文件中特殊字符“& <”导致解析错误的问题
- 21 分钟学 apollo-client 系列:写入失败的原因和解决方案
- C++ partition(STL partition)算法使用详解
- Oracle数据库入门
- C# socket 服务端与客户端通信演示代码
- 【Linux相识相知】文本处理工具之grep-egrep-fgrep及正则表
- objective-c – SLComposeViewController CompletionHandle