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

Как объединить изображения в Go?

Опубликовано 9 ноября 2024 г.
Просматривать:800

How to Concatenate Images in Go?

Объединение изображений в Go: подробное руководство

В Go манипулировать изображениями очень просто благодаря мощным библиотекам изображений. Однако если вы хотите объединить несколько изображений в один большой холст, все может запутаться. Вот пошаговое руководство, позволяющее профессионально справиться с этой задачей.

Загрузка изображений

Для начала загрузите изображения, которые хотите объединить. Вот фрагмент кода для этого:

// Open the first image
imgFile1, err := os.Open("test1.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img1, _, err := image.Decode(imgFile1)
if err != nil {
    fmt.Println(err)
}

// Open the second image
imgFile2, err := os.Open("test2.jpg")
if err != nil {
    fmt.Println(err)
}
// Decode the image
img2, _, err := image.Decode(imgFile2)
if err != nil {
    fmt.Println(err)
}

Создание нового изображения

Далее давайте создадим новое просторное изображение, вмещающее оба загруженных изображения. Определите размеры этого нового холста, сложив ширины обоих изображений:

r := image.Rectangle{image.Point{0, 0}, img1.Bounds().Dx()   img2.Bounds().Dx(), img1.Bounds().Dy()}
rgba := image.NewRGBA(r)

Рисование изображений

Теперь самое интересное: сборка изображений на новом холсте. Определите позицию, в которой вы хотите разместить второе изображение, а затем нарисуйте оба изображения на холсте:

// Starting point of the second image (bottom left)
sp2 := image.Point{img1.Bounds().Dx(), 0}
// Rectangle for the second image
r2 := image.Rectangle{sp2, sp2.Add(img2.Bounds().Size())}

// Draw the first image
draw.Draw(rgba, img1.Bounds(), img1, image.Point{0, 0}, draw.Src)
// Draw the second image
draw.Draw(rgba, r2, img2, image.Point{0, 0}, draw.Src)

Сохранение результата

Наконец, давайте увековечим это объединенное шедевр, сохранив его как новый файл изображения:

out, err := os.Create("./output.jpg")
if err != nil {
    fmt.Println(err)
}

var opt jpeg.Options
opt.Quality = 80

jpeg.Encode(out, rgba, &opt)

Вот и все! Вы успешно объединили несколько изображений в единое целое. Вперед и покорите мир манипуляций с изображениями.

Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3