对比度为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调整位图图像亮度/对比度所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)