温馨提示×

Go语言图片处理如何进行压缩和解压

小樊
81
2024-11-07 12:42:41
栏目: 编程语言

在Go语言中,可以使用第三方库进行图片处理,例如imageimage/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等。

0