使用c调整位图图像亮度对比度

使用c调整位图图像亮度对比度,第1张

概述使用c调整图像亮度/对比度,而不使用任何其他第三方库或依赖性 图像亮度为 here(死链接) – 使用RGB值的平均值并移动它们. 对比度为here(死链接),也提供其他语言解决方案. 编辑链接已死: Jerry Coffin在下面给出的答案涵盖了相同的主题,并且链接仍然存在. 但是,要调整亮度,可以为图像的R,G,B字段添加一个常量值.确保使用饱和数学 – 不允许值低于0或高于您的位深度允许的最 使用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调整位图图像亮度/对比度全部内容,希望文章能够帮你解决使用c调整位图图像亮度/对比度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1212927.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存