C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用c调整位图图像亮度/对比度大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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调整位图图像亮度/对比度所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。