рассмотрим следующий сценарий:
задача состоит в том, чтобы достичь этой функциональности в Golang.
решение
Package Main импорт ( "FMT" "ОС" "Изображение/Рисунок" "изображение" "Изображение/JPEG" "code.google.com/p/graphics-go/graphics" ) func main () { fimg1, _: = os.open ("arrow1.jpg") DEFE FIMG1.CLOSE () img1, _, _: = image.decode (fimg1) fimg2, _: = os.open ("arrow2.jpg") DEFE 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") DEFE TOIMG.CLOSE () jpeg.encode (toimg, m, & jpeg.options {jpeg.defaultquality}) }
в этом примере:
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}) }два изображения, "arrow1.jpg" и "arrow2.jpg", загружаются в память. Происхождение.
второе изображение, «img2», «вращается и нарисовано на« M »под определенным углом и смещением.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3