在Go语言中,可以使用第三方库进行图片处理,例如image
和image/jpeg
等。下面是一个使用image/jpeg
库进行图片压缩和解压的示例代码:
package main
import (
"image/jpeg"
"os"
)
func compressImage(inputPath string, outputPath string, quality int) error {
// 打开输入文件
inputFile, err := os.Open(inputPath)
if err != nil {
return err
}
defer inputFile.Close()
// 解码图片
img, err := jpeg.Decode(inputFile)
if err != nil {
return err
}
// 创建输出文件
outputFile, err := os.Create(outputPath)
if err != nil {
return err
}
defer outputFile.Close()
// 设置压缩质量
opts := &jpeg.Options{Quality: quality}
// 压缩图片并保存到输出文件
err = jpeg.Encode(outputFile, img, opts)
if err != nil {
return err
}
return nil
}
func decompressImage(inputPath string, outputPath string) error {
// 打开输入文件
inputFile, err := os.Open(inputPath)
if err != nil {
return err
}
defer inputFile.Close()
// 解码图片
img, err := jpeg.Decode(inputFile)
if err != nil {
return err
}
// 创建输出文件
outputFile, err := os.Create(outputPath)
if err != nil {
return err
}
defer outputFile.Close()
// 保存图片到输出文件
err = jpeg.Encode(outputFile, img, nil)
if err != nil {
return err
}
return nil
}
在上面的代码中,compressImage
函数用于压缩图片,其中inputPath
为输入图片的路径,outputPath
为输出压缩图片的路径,quality
为压缩质量(范围为1-100)。decompressImage
函数用于解压图片,其中inputPath
为输入压缩图片的路径,outputPath
为输出解压图片的路径。
需要注意的是,上述代码仅支持JPEG格式的图片压缩和解压,如果需要支持其他格式的图片,可以使用其他第三方库,例如image/png
等。