To create a collage or mosaic of multiple images in Go, you can utilize the github.com/disintegration/imaging
library. This library provides functionalities to perform image manipulation tasks, including resizing, cropping, and drawing.
Here's an example of how you can create a simple collage using the imaging
library:
package main
import (
"image"
"image/draw"
"image/jpeg"
"log"
"os"
"github.com/disintegration/imaging"
)
func main() {
// Load the images
img1, err := imaging.Open("image1.jpg")
if err != nil {
log.Fatalf("failed to open image1.jpg: %v", err)
}
img2, err := imaging.Open("image2.jpg")
if err != nil {
log.Fatalf("failed to open image2.jpg: %v", err)
}
img3, err := imaging.Open("image3.jpg")
if err != nil {
log.Fatalf("failed to open image3.jpg: %v", err)
}
// Resize the images to the desired size
size := image.Pt(200, 200)
resized1 := imaging.Resize(img1, size.X, size.Y, imaging.Lanczos)
resized2 := imaging.Resize(img2, size.X, size.Y, imaging.Lanczos)
resized3 := imaging.Resize(img3, size.X, size.Y, imaging.Lanczos)
// Create a new blank canvas for the collage with the desired size
collage := imaging.New(size.X*3, size.Y)
// Draw the resized images onto the collage
offsetX := 0
draw.Draw(collage, image.Rect(offsetX, 0, offsetX+size.X, size.Y), resized1, image.Point{}, draw.Src)
offsetX += size.X
draw.Draw(collage, image.Rect(offsetX, 0, offsetX+size.X, size.Y), resized2, image.Point{}, draw.Src)
offsetX += size.X
draw.Draw(collage, image.Rect(offsetX, 0, offsetX+size.X, size.Y), resized3, image.Point{}, draw.Src)
// Save the resulting collage as a new image file
resultFile, err := os.Create("collage.jpg")
if err != nil {
log.Fatalf("failed to create collage.jpg: %v", err)
}
defer resultFile.Close()
jpeg.Encode(resultFile, collage, nil)
}
In this example, the imaging.Open
function is used to load three input images, which are then resized to a desired size using imaging.Resize
function. These resized images are then drawn onto a new blank canvas (collage
) using the draw.Draw
function. Finally, the resulting collage image is saved as a new file using jpeg.Encode
.
Make sure to replace the file names with the actual file names or paths of the images you want to use in your collage.