«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Навыки ротации и слияния языка GO

Навыки ротации и слияния языка GO

Опубликовано в 2025-04-12
Просматривать:829

How Can I Combine and Rotate Images in Go?

манипуляции изображения с помощью вращений с использованием Go

рассмотрим следующий сценарий:

  • фоновый изображение (Bi)
  • Image1 (I1)
  • Цель состоит в том, чтобы позиционировать I1 и i2 над Bi под определенными углами и создать конечное изображение. Координаты для I1 и I2 предоставляются вместе с их углами вращения. I1 и I2 могут частично перекрываться, но z-Index определяет, какое изображение должно появиться на переднем плане.

задача состоит в том, чтобы достичь этой функциональности в Golang.

решение

Пакет изображений Go предлагает возможности манипуляции изображения, как описано в «рисунке изображения в Go Go». (http://golang.org/doc/articles/image_draw.html).&&&&&&&&&Z—to Сочетание изображений с вращаниями, рекомендуется вспомогательный пакет, называемый Graphics-GO. Вот образец программы GO, которая демонстрирует комбинацию двух изображений с вращаниями:

]

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 »под определенным углом и смещением.
    Полученный комбинированное изображение сохраняется как« new.jpg. »
  • . Важно отметить, что пакет Graphics-Go полагается на внешние библиотеки, которые могут потребовать установки и определения установки. Обратитесь к его документации для получения подробной информации.
  • ]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3