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)
坏消息是皮尔不能这么做。我试着说出几个想法,不幸的是,没有一个是直截了当的。在
GIMP(GNU图像处理程序)有一个很棒的“ligthning effects”插件
GIMP可以用Python编写脚本,并且可以参数化地调用插件。 缺点是您的插件必须从GIMP的进程中urn。(因此,您要么将GIMP作为一个批处理进行一次运行,要么必须设计一个通过lightning effects插件处理图像的服务器python插件)
我所熟悉的另一个选项也涉及非进程渲染,即使用POVRay:将图像渲染为1x1x0.1平面板的颜料贴图,然后可以在周围放置“真实”光源。在
另一种方法是自己使用OpenGL—我浏览了一下Darond,也许这个“gloss”项目可以为您提供一种使用光源的方法,而无需进入低级OpenGL: http://www.tuxradar.com/gloss
或者用一个由黑白矩形组成的矩形网格来“伪造”它,你可以将它与你的通透颜色倍增相结合。 这是唯一可以让YOU单独使用PIL的方法,但是“网格”线太明显了,我认为尝试使用模糊进行平滑不会剪切它:
相关问题 更多 >
编程相关推荐