Golang修改图片JPEGjpg的大小和质量

时间:2025-03-08 07:59:27
package fyimage import ( "bytes" "/gogf/gf/os/glog" "/nfnt/resize" "image" "image/jpeg" ) // 默认最大高度 const MaxHeight uint = 1080 // 当文件是JPEG格式时,对文件进行压缩。 // 压缩的方式主要是借助原生的image/jpeg 修改图片的质量和像素的大小。 // 该方案并不是最优的方案,通过客户端首次进行压缩会大大减少服务端的压力 // 文件小于 1MB 或者不是jpeg格式,不再压缩 func CompressImageResource(data []byte) []byte { if len(data) < 1024*1024 { return data } img, _, err := image.Decode(bytes.NewReader(data)) if err != nil { glog.Warningf("jpeg compress failed,err:%v",err) return data } // 修改图片的大小 m := resize.Resize(0, MaxHeight, img, resize.Lanczos3) buf := bytes.Buffer{} // 修改图片的质量 err = jpeg.Encode(&buf, m, &jpeg.Options{Quality: 60}) if err != nil { glog.Warningf("jpeg compress failed,err:%v",err) return data } if buf.Len() > len(data) { return data } return buf.Bytes() }

相关文章