高质量编程与性能调优实战(一) | 青训营

143 阅读1分钟

图片优化

在Go语言中可以使用一些第三方库来进行图片优化。

例如:

  1. 压缩图片: 图片压缩是一种减小图片文件大小的常用技术。你可以使用像"image/jpeg"和"image/png"这样的标准库来加载和保存图片,然后调整图像的压缩质量。
package main

import (
	"image"
	"image/jpeg"
	"image/png"
	"os"
)

func main() {
	// 读取图片
	imgFile, _ := os.Open("input.jpg")
	defer imgFile.Close()

	img, _, _ := image.Decode(imgFile)

	// 保存为JPEG格式,调整压缩质量
	jpegFile, _ := os.Create("output.jpg")
	defer jpegFile.Close()

	jpegOptions := jpeg.Options{Quality: 80} // 调整压缩质量,0-100
	jpeg.Encode(jpegFile, img, &jpegOptions)
}
  1. 调整分辨率: 缩小图片的分辨率可以减少文件大小。你可以使用像github.com/nfnt/resize"这样的库来调整图片的大小。
bashCopy code
go get github.com/nfnt/resize
package main

import (
	"image"
	"image/jpeg"
	"log"
	"os"

	"github.com/nfnt/resize"
)

func main() {
	imgFile, err := os.Open("input.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer imgFile.Close()

	img, _, err := image.Decode(imgFile)
	if err != nil {
		log.Fatal(err)
	}

	// 调整分辨率
	newImg := resize.Resize(800, 0, img, resize.Lanczos3)

	// 保存新的图片
	outFile, err := os.Create("output.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer outFile.Close()

	jpeg.Encode(outFile, newImg, nil)
}
  1. 使用图片格式转换: 有时,将图片从一种格式转换为另一种格式可以减小文件大小。例如,将图片从PNG转换为JPEG格式。
package main

import (
	"image"
	"image/jpeg"
	"image/png"
	"log"
	"os"
)

func main() {
	pngFile, err := os.Open("input.png")
	if err != nil {
		log.Fatal(err)
	}
	defer pngFile.Close()

	img, _, err := image.Decode(pngFile)
	if err != nil {
		log.Fatal(err)
	}

	// 保存为JPEG格式
	jpegFile, err := os.Create("output.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer jpegFile.Close()

	jpeg.Encode(jpegFile, img, nil)
}