图片优化
在Go语言中可以使用一些第三方库来进行图片优化。
例如:
- 压缩图片: 图片压缩是一种减小图片文件大小的常用技术。你可以使用像"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)
}
- 调整分辨率: 缩小图片的分辨率可以减少文件大小。你可以使用像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)
}
- 使用图片格式转换: 有时,将图片从一种格式转换为另一种格式可以减小文件大小。例如,将图片从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)
}