首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枕头相当于GIMP的亮度对比度对话?

枕头相当于GIMP的亮度对比度对话?
EN

Stack Overflow用户
提问于 2019-06-24 19:10:04
回答 1查看 161关注 0票数 1

如何调整图像的对比度和亮度以匹配GIMP的Colours > Brightness-Contrast对话框?

亮度为-110,对比度为127是我想要达到的效果。

我在this answer中找到了这个函数

代码语言:javascript
复制
def change_contrast(img, level):
    factor = (259 * (level + 255)) / (255 * (259 - level))
    def contrast(c):
        value = 128 + factor * (c - 128)
        return max(0, min(255, value))
    return img.point(contrast)

此函数使用我想要的值再现对比度,但我找不到与亮度等效的值。

我知道ImageEnhance模块存在,但它有一个无界浮点作为参数,如何将我在gimp中使用的值转换为这种格式?或者有没有其他的解决方案,我可以把这些值插入其中。ImageEnhance文档没有解释这个参数是如何工作的。

代码语言:javascript
复制
from PIL import Image, ImageEnhance

img = Image.open(path)
enhancer = ImageEnhance.Brightness(img)
img = enhancer.enhance(0.2)
enhancer = ImageEnhance.Contrast(img)
img = enhancer.enhance(2.0)
EN

回答 1

Stack Overflow用户

发布于 2019-06-24 21:06:18

文档解释说:

这个类可以用来控制图像的亮度。如果增强因子为0.0,则会生成黑色图像。因子1.0表示原始图像。

要精确匹配GIMP中的行为,您可以将0.0到1.0的范围映射到GIMP范围,例如,使用代码找到的here

代码语言:javascript
复制
def maprange( a, b, s):
    (a1, a2), (b1, b2) = a, b
    return  b1 + ((s - a1) * (b2 - b1) / (a2 - a1))

或者一个很好的解决方案,它使用SciPy插值函数找到here

代码语言:javascript
复制
from scipy.interpolate import interp1d
m = interp1d([gimp_lower, gimp_upper],[0.0, 1.0])
print(m(50))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56735308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档