Манипуляция изображениями в Голанге

У меня есть следующее:

  • Фоновое изображение (би)
  • Изображение1 (i1)
  • Image3 (i2)

Я хочу расположить i1 и i2 по би с некоторым углом, а затем создать окончательное изображение. У меня есть значение оси x и y для i1 и i2 и их ожидаемый угол поворота. i1 и i2 могут частично накладываться друг на друга. но у меня есть индекс z для i1 и i2, чтобы знать, если в случае их перекрытия, кто будет на переднем плане.

Я пытаюсь добиться этого в Голанге.
http://golang.org/doc/articles/image_draw.html, похоже, делает это. Любой знает какой-либо подобный пример кода, который может помочь. Или вы можете показать мне пару строк в Голанге в качестве псевдопрограммы?

Спасибо.

Ответ 1

Не уверен, что именно вы ищете, и я вообще не работал с пакетом изображений... но просто следуя образцу кода и используя graphics-go (это работает для меня), я смог хоть что-то сделать.

package main

import (
    "fmt"
    "os"
    "image/draw"
    "image"
    "image/jpeg"
    "code.google.com/p/graphics-go/graphics"
)

func main() {
    fImg1, _ := os.Open("arrow1.jpg")
    defer fImg1.Close()
    img1, _, _ := image.Decode(fImg1)

    fImg2, _ := os.Open("arrow2.jpg")
    defer fImg2.Close()
    img2, _, _ := image.Decode(fImg2)

    m := image.NewRGBA(image.Rect(0, 0, 800, 600))
    draw.Draw(m, m.Bounds(), img1, image.Point{0,0}, draw.Src)
    //draw.Draw(m, m.Bounds(), img2, image.Point{-200,-200}, draw.Src)
    graphics.Rotate(m, img2, &graphics.RotateOptions{3.5})

    toimg, _ := os.Create("new.jpg")
    defer toimg.Close()

    jpeg.Encode(toimg, m, &jpeg.Options{jpeg.DefaultQuality})
}