如何缩小图像尺寸和尺寸

时间:2020-06-30 11:22:58

标签: go

我想处理本地图像以使尺寸为高度= 380 PX,宽度= 380 px ,并且尺寸小于 20kb

我有以下代码,该代码读取文件,然后将尺寸乘以380更改为380,然后尝试减小尺寸。

但是如果原始文件很大,有时大小会超过20 KB。如何确保该文件始终小于20 KB?

如何在尺寸更改后检查图像尺寸以及质量降低后的图像尺寸?这样我就可以循环运行。

    package main

import (
    "bufio"
    "bytes"
    "fmt"
    "image"
    "image/jpeg"
    "image/png"
    "os"

    "github.com/davecgh/go-spew/spew"
    "github.com/nfnt/resize"
)

func main() {
// Read Local file 

    mainFile, err := os.Open("C://c.jpg")
    if err != nil {

        fmt.Println("Erro Occured")
        spew.Dump(err)
        return
    }

    defer mainFile.Close()

    originalimage, _, err := image.Decode(mainFile)

    if err != nil {
        fmt.Println("Error ", err)
        originalimage, err2 := png.Decode(mainFile)
        print(err2)
        print(originalimage)
    }

    // Create new file with reduced dimentions - height width as 380

    newImage := resize.Resize(380, 380, originalimage, resize.Lanczos3)



    // Create new file with reduced size - Quality down by 50%
    var b bytes.Buffer
    w1 := bufio.NewWriter(&b)

    jpeg.Encode(w1, newImage, &jpeg.Options{50})

    f2, err := os.OpenFile("C://temp5.png", os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        panic(err)

    }

    defer f2.Close()

    b.WriteTo(f2)

}

0 个答案:

没有答案