Python 当 stroke_width > 2 时魔杖绘制多边形而不是矩形

Python wand drawed polygons instead of rectangle when stroke_width > 2

我不确定我做错了什么,但这真的很奇怪。 不确定我是否应该向 wand 的 Git 存储库提交新问题。

编辑:我正在尝试绘制一个矩形。

考虑以下代码:

from wand.drawing import Drawing
from wand.color import Color
from wand.image import Image
def drawer():
    square = Drawing()
    square.fill_color = Color('#fff')
    square.stroke_width = 4
    square.stroke_color = Color('red')
    square.rectangle(left=100, top=100, width=100, height=100)
    return square

im = Image(width=500, height=500)
sq = drawer()
sq.draw(im)
im.save(filename='test1.png')

这输出:

根据我试错的结果,如果 square.stroke_width 小于或等于 2,则不会发生这种情况。

不知道是Wand的bug还是我操作有误

根据 http://docs.wand-py.org/en/0.4.1/guide/draw.html 它应该可以正常工作。如果您转到页面底部,它会显示如何绘制多边形。与您的代码相比,它应该可以正常工作。我不知道出了什么问题,但我很确定你的代码没问题。

看起来您有孤立的绘图实例。 Wand 利用 python 的 with ... as ... : 关键字来管理上下文和资源。示例...

from wand.drawing import Drawing
from wand.color import Color
from wand.image import Image

class Drawer(Drawing):
    def __enter__(self):
        super(Drawing, self).__enter__()
        self.fill_color = Color('#fff')
        self.stroke_width = 4
        self.stroke_color = Color('red')
        self.rectangle(left=100, top=100, width=100, height=100)
        return self

with Image(width=500, height=500) as im:
    with Drawer() as sq:
        sq(im)
    im.save(filename='/tmp/test1.png')

我已经弄明白了。 ubuntu 的 APT 存储库中的 libmagickwand-dev 已过时。

$ python -m wand.version -v
Wand 0.4.2
ImageMagick 6.7.7-10 2014-03-06 Q16 http://www.imagemagick.org
$ apt-cache show  libmagickwand-dev | grep Version
Version: 8:6.7.7.10-6ubuntu3

所以我更新了它。按照 here 提供的说明,我添加了

export MAGICK_HOME=/usr/local/lib/ 到我的环境变量。 它奏效了。

$ python -m wand.version -v
Wand 0.4.1
ImageMagick 6.9.2-0 Q16 x86_64 2015-09-08 http://www.imagemagick.org