可以使用 Go 语言中的 image 包来生成一张新的图片。具体操作如下:
- 导入 image 包和远成图片包
import (
"image"
_ "image/jpeg"
"image/png"
"net/http"
)
- 下载远成图片并解码为 image.Image 类型
resp, err := http.Get("https://www.example.com/image.jpg")
if err != nil {
// 错误处理
}
defer resp.Body.Close()
img, _, err := image.Decode(resp.Body)
if err != nil {
// 错误处理
}
- 创建一个新的 RGBA 图片
newImg := image.NewRGBA(image.Rect(0, 0, width, height))
其中,width 和 height 分别为新图片的宽度和高度。
- 将原图复制到新图上
draw.Draw(newImg, newImg.Bounds(), img, img.Bounds().Min, draw.Src)
- 将新图编码为 png 格式并保存到本地
file, err := os.Create("newImage.png")
if err != nil {
// 错误处理
}
defer file.Close()
err = png.Encode(file, newImg)
if err != nil {
// 错误处理
}
完整代码示例:
package main
import (
"image"
_ "image/jpeg"
"image/png"
"net/http"
"os"
"log"
)
func main() {
resp, err := http.Get("https://www.example.com/image.jpg")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
img, _, err := image.Decode(resp.Body)
if err != nil {
log.Fatal(err)
}
width, height := 800, 600
newImg := image.NewRGBA(image.Rect(0, 0, width, height))
draw.Draw(newImg, newImg.Bounds(), img, img.Bounds().Min, draw.Src)
file, err := os.Create("newImage.png")
if err != nil {
log.Fatal(err)
}
defer file.Close()
err = png.Encode(file, newImg)
if err != nil {
log.Fatal(err)
}
}