【问题标题】:PIL polygon fill issuePIL多边形填充问题
【发布时间】:2013-05-25 07:35:54
【问题描述】:

我正在使用 PIL==1.1.7

我正在尝试用如下颜色填充多边形:

def save(self):
    try:
        image = Map.objects.all()[0].image
        im = Image.open(image.path)
        draw = ImageDraw.Draw(im)
        draw.polygon(((685,255),(714,361),(698,389),(610,411),(575,285)), fill=(255,255,255))

        del draw 
        format = 'png'
        im.save(image.path, format)
    except Exception, e:
        print e
        pass

但我得到了例外:

invalid literal for int() with base 10: '\x8f'

它是这样工作的:

draw.polygon(((685,255),(714,361),(698,389),(610,411),(575,285)), fill=128)

这个错误是什么意思?

我正在尝试在我的图像上绘制透明多边形。

【问题讨论】:

  • 你确定错误来自这一行吗?
  • 是的,100% 确定。如果我把它拿出来,它就可以正常工作。
  • 一个简短的自包含正确示例 (pscode.org/sscce.html) 可能会有所帮助。我编的一个例子没有出现这个错误。
  • 你在做同样的事情吗?
  • 不完全一样,因为您没有提供任何人都可以运行的示例,但fill=(60,204,22) 的行是相同的。

标签: python python-imaging-library


【解决方案1】:

您可能在 PIL 中遇到了错误:bug report

如果您发布了完整的回溯,我可以说得更好。如果是这个错误,那么看起来像在 ImagePallet.py 中将第 62 行更改为:

self.palette = map(ord, self.palette)

会修复它(基本上在那一行用ord替换int)。

【讨论】:

  • 这消除了错误,但现在整个图像已被绘制。坐标不再正确
  • 很难弄清楚确切的问题是什么,因为您还没有提供任何人都可以实际运行的示例。你能做到吗?如果我将您使用的任何图像替换为:im = Image.new('RGBA', (800, 800), (0, 255, 0, 0)),它似乎可以工作。你能重现这张图片的问题吗?你在用调色板做一些特别的事情吗?
猜你喜欢
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多