在 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)
就是这样!您已成功将多个图像合并为一个有凝聚力的整体。继续前进,征服图像处理的世界。
以上是如何在 Go 中连接图像?的详细内容。更多信息请关注PHP中文网其他相关文章!