Как наложить изображение на другое изображение(в центр)?

Чтобы наложить изображение на другое изображение в языке программирования Go, в центре, вам необходимо использовать стандартную библиотеку Go image и image/draw.

Вот пример кода, который показывает, как это можно сделать:

package main

import (
	"fmt"
	"image"
	"image/draw"
	"image/jpeg"
	"os"
)

func main() {
	// Открываем основное изображение
	bgImageFile, err := os.Open("background.jpg")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	defer bgImageFile.Close()

	// Декодируем изображение
	bgImage, err := jpeg.Decode(bgImageFile)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	// Открываем изображение, которое хотим наложить
	overlayImageFile, err := os.Open("overlay.png")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	defer overlayImageFile.Close()

	// Декодируем изображение
	overlayImage, err := jpeg.Decode(overlayImageFile)
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	// Создаем новое изображение того же размера, что и основное изображение
	result := image.NewRGBA(bgImage.Bounds())

	// Наложите основное изображение на новое изображение
	draw.Draw(result, bgImage.Bounds(), bgImage, image.ZP, draw.Src)

	// Определите координаты верхнего левого угла изображения, которое хотите наложить
	overlayX := (bgImage.Bounds().Dx() - overlayImage.Bounds().Dx()) / 2
	overlayY := (bgImage.Bounds().Dy() - overlayImage.Bounds().Dy()) / 2
	overlayPos := image.Point{overlayX, overlayY}

	// Наложите изображение, которое вы хотите наложить, на новое изображение
	draw.Draw(result, overlayImage.Bounds().Add(overlayPos), overlayImage, image.ZP, draw.Over)

	// Сохраните результат в новый файл изображения
	resultFile, err := os.Create("result.jpg")
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	defer resultFile.Close()

	// Кодируем новое изображение в формат JPEG и сохраняем его
	jpeg.Encode(resultFile, result, nil)

	fmt.Println("Изображение успешно наложено!")
}

В данном примере используется два файла изображений: background.jpg, которое является основным изображением, и overlay.png, которое является изображением, которое будет наложено на основное изображение.

Программа открывает оба файла изображений, декодирует их и создает новое изображение, которое является копией основного изображения (bgImage). Затем определены координаты верхнего левого угла изображения, которое нужно наложить, чтобы оно было в центре основного изображения. Изображение наложено на новое изображение result с помощью функции draw.Draw, используя константу draw.Over. Наконец, новое изображение кодируется в формат JPEG и сохраняется в файл с именем result.jpg.

После выполнения программы, вы получите файл result.jpg, в котором изображение будет наложено на заданный файл background.jpg в центре. Обратите внимание, что вы должны заменить пути к файлам background.jpg и overlay.png на соответствующие пути на вашей системе.