
go文件上传如何获取图片文件的分辨率
作者: boyyang
分类: 后端开发
发布: 2024-04-09 10:42:24
更新: 2025-03-23 11:57:13
浏览: 153
今天在做图片瀑布流的时候,如果前端通过获取dom的方式来做瀑布流,那么得需要等dom渲染结束后,获取图片文件等宽高,然后再计算每张图片的位置。如果使用了懒加载,又会有各种莫名奇妙的问题,在网上找了一圈,关于nuxt3的瀑布流组件,但是还是有各种问题。所以我改变了策略,通过图片上传的时候,就记录图片的尺寸,获取数据时将尺寸返回给前端,前端直接使用数据计算,也就方便多了。
但是,但是,后端在处理图片时我又遇到了问题,由于后端获取到的是multipart.File ,multipart.FileHeader这2个文件信息,需要将其转为Image然后才能获取到图片的尺寸。
代码如下:
package helper
import (
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"mime/multipart"
)
func ImageWH(fileHeader *multipart.FileHeader) (w int, h int, err error) {
f, err := fileHeader.Open()
if err != nil {
return 0, 0, err
}
img, _, err := image.Decode(f)
if err != nil {
return 0, 0, err
}
g := img.Bounds()
return g.Dx(), g.Dy(), nil
}