golang修改图片尺寸
/*就简单的读取、修改、写入,应用时只需遍历目录再多开几个携程跑即可*/ package main import ( "bytes" "fmt" "image" "image/jpeg" "io/ioutil" "mylog" "os" "github.com/nfnt/resize" _ "image/gif" _ "image/png" ) func main() { old, err := os.ReadFile(`./download/png.png`) if err != nil { fmt.Println(err) } new_pic := CompressImageResource(old) ioutil.WriteFile( "./download/png.jpg" , new_pic, 0666) } // 默认最大高度 const MaxHeight uint = 1080 // 文件小于 200KB 或者不是jpeg/png格式,不再压缩 func CompressImageResource(data []byte) []byte { if len(data) < 1024*200 { return data } img, _, err := image.Decode(bytes.NewReader(data)) if err != nil { mylog.Printf( "jpeg png 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: 85}) if err != nil { mylog.Printf( "jpeg compress failed,err:%v" , err) return data } if buf.Len() > len(data) { return data } return buf.Bytes() } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具