1

我可以知道如何将imagick.MagickWandstruct 传递给函数并在其上应用方法吗?似乎imagick.NewMagickWand返回的类型*imagick.MagickWand,不是吗?

我无法完成,不断收到错误消息:ERROR_WAND: ContainsNoImages `MagickWand-0'

如何将正确的结构引用传递给函数,以便mw可以在这些函数中连续使用

func generateImage() error {
    // skip error handling
    var err error 

    mw := imagick.NewMagickWand()
    defer mw.Destroy()

    err = createCanvas(mw, "red") // create canvas
    err = compositeIcon(mw, "c:/icon.png") // add icon
    err = addText(mw, "Hello world") // add text

    err = mw.WriteImage("c:/output") // get the output
}

func createCanvas(mw *imagick.MagickWand, color string) error {
    // skip error handling
    var err error
    pw := imagick.NewPixelWand()
    defer pw.Destroy()

    pw.SetColor("blue")
    err = mw.NewImage(200, 100, pw)
    return nil
}

请问可以帮忙吗?新手来了 :)


更新:

我给出的例子是正确的。在上面的示例中通过引用传递是正确的,我收到了错误,因为我忽略了我的代码并调试了错误的行。很抱歉造成混乱。

谢谢。

4

1 回答 1

3

如果mw有类型*imagick.MagickWand*mw有类型imagick.MagickWand

也就是说,mw是一个指向该类型的指针,并且*操作符取消引用指向该类型本身的指针。

mw := imagick.NewMagickWand() // Now mw is a *imagick.MagickWand
*mw // Is a imagick.MagickWand
于 2018-09-28T15:36:03.603 回答