【问题标题】:Flood fill with Graphicsmagick or pgmagick使用 Graphicsmagick 或 pgmagick 进行洪水填充
【发布时间】:2013-12-10 06:40:37
【问题描述】:

问题

使用 Graphicsmagick 命令行或其用于 python 的 pgmagick 包装器使用洪水填充的好方法是什么?

背景

到目前为止,这就是我所拥有的,但它说签名不匹配:

代码:
from pgmagick import Image, ColorRGB

img = Image('C:\\test.png')
cRGB = ColorRGB(256.0, 256.0, 256.0)
geo = Geometry(1,1)
img.floodFillColor(geo, cRGB, cRGB)
错误: 文件“C:/Dropbox/COC/automate/coc_automate/python/__init__.py”,第 62 行,在 take_main_screen_shot img.floodFillColor(geo, cRGB, cRGB) Boost.Python.ArgumentError:Python 参数类型在 Image.floodFillColor(图像,几何,ColorRGB,ColorRGB) 与 C++ 签名不匹配: floodFillColor(Magick::Image {lvalue} 类,Magick::Geometry 类,Magick::Color 类,Magick::Color 类) floodFillColor(类 Magick::Image {lvalue}, 类 Magick::Geometry, 类 Magick::Color)

额外

另外,如果您知道我可以从 Python 应用程序或 Windows 命令行操作图形的更好方法,我会全力以赴。我开始觉得我可能在文档状态下使用了错误的工具。

【问题讨论】:

  • 您是否尝试过强制将显式强制转换为 Color,例如(颜色)cRGB?

标签: python graphics imagemagick graphicsmagick pgmagick


【解决方案1】:

我建议您查看Python Imaging Library (PIL)

例如draw a gray cross over an image

import Image, ImageDraw

im = Image.open("lena.pgm")

draw = ImageDraw.Draw(im)
draw.line((0, 0) + im.size, fill=128)
draw.line((0, im.size[1], im.size[0], 0), fill=128)
del draw 

# write to stdout
im.save(sys.stdout, "PNG")

【讨论】:

  • 根据我读到的资料,PIL 现在几乎是废弃软件,我们都应该改用 Pillow。
【解决方案2】:

正如您所说,文档不是很好。 pgmagick 是一个用于 C++ 前端的精简 Python 包装器,因此您必须深入了解接口层以弄清楚如何使其工作。除非您需要额外的功能,否则 Pillow 可能是更好的选择。

我一直使用 pgmagick 和 ImageMagick,而不是 GraphicsMagick,作为后端。我不知道这是否有很大的不同。无论如何,为了让您的代码正常工作,我需要进行以下调整:

  • 使用颜色而不是 RGBColor

    from pgmagick import Color
    color = Color('white')
    
  • 在实例化 Geometry 对象时再提供两个 0:

    from pgmagick import Geometry
    geo = Geometry(0, 0, 1, 1)
    
  • 与其将两个颜色参数传递给 floodFillColor,不如先调用 fillColor,然后再调用 调用floodFillColor,像这样:

    img.fillColor(color)
    img.floodFillColor(geo, color)
    

【讨论】:

  • 嘿,我想你的意思可能是评论而不是问题的答案?
  • 我已经扩展了答案
猜你喜欢
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2013-01-16
相关资源
最近更新 更多