我想使用 Python 指定图像中特定位置的光源。
PIL 的 ImageEnhance 模块确实提供了一种增强图像的方法。但我想控制光源的放置以实现特殊效果。有谁知道该怎么做吗?
谢谢!
最佳答案
所以,坏消息是 PIL 无法做到这一点。我在下面提出了一些想法,不幸的是,没有一个是直截了当的。
GIMP(GNU 图像处理程序)确实有一个很棒的“闪电效果”插件,
GIMP 可以用 Python 编写脚本,并且可以参数化地调用插件。 缺点是您的插件必须从 GIMP 进程中运行。 (因此,您要么以批量方式启动 GIMP 一次运行,要么必须设计一个服务器 Python 插件,通过闪电效果插件处理您的图像)
我熟悉的其他选项也涉及进程外渲染,即使用 POVRay:将图像渲染为 1x1x0.1 平面板的颜料贴图,然后您可以在周围放置“真实”光源。
另一种方法是自己使用 OpenGL - 我浏览了一下,也许这个“gloss”项目可以为您提供一种使用光源的方法,而无需深入到低级 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)
关于python - 在Python中为图像添加灯光效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2028809/