我想使用Python在图像中的特定位置指定光源。
PIL的ImageEnhance模块确实为图像提供了一种方法。但我想控制光源放置以达到特殊效果。有谁知道怎么做?
谢谢你!答案 0 :(得分:1)
所以,坏消息是PIL无法做到这一点。我特别提出了几个想法,不幸的是,这些想法都不是直截了当的。
GIMP(GNU Image Manipulation Program)确实有一个很棒的“ligthning effects”插件,
GIMP可以用Python编写脚本,并且可以通过参数调用插件。 缺点是你的插件必须在GIMP的过程中输入。 (所以你要么将GIMP作为批次进行一次运行,要么设计一个服务器python插件,通过闪电效果插件处理你的图像)
我熟悉的其他选项还涉及进程外渲染将使用POVRay:渲染图像作为1x1x0.1平面板的颜料图,然后你可以放置“真正的”光源。
另一种方法是自己使用OpenGL - 我稍微浏览了一下,也许这个“光泽”项目可以为你提供一种方式,让你可以使用光源而不需要进入低级别的opengl: http://www.tuxradar.com/gloss
或者 - 用一个黑色和白色矩形的矩形网格“伪造”它,你可以将它与你的颜色乘法结合起来。 这是允许yiou单独使用PIL的唯一方法,但是“网格”线太明显了,我认为尝试用模糊来平滑不会削减它:
def fake_light(image, tilesize=50):
WIDTH, HEIGHT = i.size
for x in xrange(0, WIDTH, tilesize):
for y in xrange(0, HEIGHT, tilesize):
br = int(255 * (1 - x / float(WIDTH) * y /float(HEIGHT)))
tile = Image.new("RGBA", (tilesize, tilesize), (255,255,255,128))
image.paste((br,br,br), (x, y, x + tilesize, y + tilesize), mask=tile)