在Go語(yǔ)言中,可以使用第三方庫(kù)進(jìn)行圖片處理,例如image
和image/jpeg
等。下面是一個(gè)使用image/jpeg
庫(kù)進(jìn)行圖片壓縮和解壓的示例代碼:
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
}
// 創(chuàng)建輸出文件
outputFile, err := os.Create(outputPath)
if err != nil {
return err
}
defer outputFile.Close()
// 設(shè)置壓縮質(zhì)量
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
}
// 創(chuàng)建輸出文件
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
函數(shù)用于壓縮圖片,其中inputPath
為輸入圖片的路徑,outputPath
為輸出壓縮圖片的路徑,quality
為壓縮質(zhì)量(范圍為1-100)。decompressImage
函數(shù)用于解壓圖片,其中inputPath
為輸入壓縮圖片的路徑,outputPath
為輸出解壓圖片的路徑。
需要注意的是,上述代碼僅支持JPEG格式的圖片壓縮和解壓,如果需要支持其他格式的圖片,可以使用其他第三方庫(kù),例如image/png
等。