在Python中应用图像装饰(边框)(以编程方式)

时间:2010-01-03 18:16:41

标签: python image image-processing

我正在寻找一种在python中创建边框的方法。我们可以导入Python中的任何库来创建边框。

请注意,我不想使用任何图像蒙版来创建此效果(例如,我不想使用任何图像编辑软件包,如GIMP来创建边框图像蒙版)。

以下是我要找的内容:

import fooImageBorders 
import Image 

foo = Image.open("someImage.jpg")
foo2 = fooImageBorders.bevel(foo, color = black)

...我可以编写自己的方法来添加边框..但如果已经有类似这样的东西有一套全面的边框选项,我想利用它。

我查看了PIL文档,找不到这样做的方法。我有windows xp,如果你没有cygwin,似乎没有办法为Python 2.6安装PythonMagick。

谢谢!

3 个答案:

答案 0 :(得分:11)

查看PIL中的ImageOps模块。

import Image
import ImageOps

x = Image.open('test.png')
y = ImageOps.expand(x,border=5,fill='red')
y.save('test2.png')

答案 1 :(得分:2)

您可以使用PythonMagick module。该模块的文档是here (Magic ++ documentation)

示例:要为图像添加红色2像素边框,您需要以下代码。

from PythonMagick import Image
i = Image('example.jpg') # reades image and creates an image instance
i.borderColor("#ff0000") # sets border paint color to red
i.border("2x2") # paints a 2 pixel border
i.write("out.jpg")
# writes the image to a file 

答案 2 :(得分:1)

foo2 = foo.copy()
draw = ImageDraw.Draw(foo2)
for i in range(width):
    draw.rectangle([i, i, foo2.size[0]-i-1, foo2.size[1]-i-1], outline = color)

foo2的{​​{1}}像素边框为width

如果您希望每侧都有不同颜色的边框,则可以使用重复的color来电替换.rectangle

如果您希望边框不覆盖现有图像的任何部分,请使用此代替.line

foo.copy()