png: invalid format: not a PNG file
或
png: invalid format: not a JPEG file
或
invalid JPEG format: missing SOI marker
或
invalid JPG format: missing SOI marker
或
invalid PNG format: missing SOI marker
…等等
背景
这几个报错都几乎发生在jpeg.Decode、png.Decode、image.Decode的时候,共性就是
最简单的例子就是直接改后缀名就会导致基于一定方法来转换就出错。
这些报错前后都经历了,还尝试过换不同的后缀来进行合成,因为前一步转换(webp–>png、webp–>jpg、webp–>jpeg)的方法不对,导致最终合成都会失败(合成时会有Decode这一步)。
尝试过base64那种方式转换然后加后缀,也是不行的(多数方式代码看起来很像,实则还是有区别)。
解决方案
// dir:新存放目录, path:源文件路径 imageType: 要转成的格式
// convert 转换格式
func convertFormat(srcPath, dir string, imageType bimg.ImageType) (error, string) {
buffer, err := bimg.Read(srcPath)
if err != nil {
return err, ""
}
bImage := bimg.NewImage(buffer)
options := bimg.Options{
// Width: 512,
// Height: 512, // 按实际需要是否需要resize
Embed: true,
Quality: 96,
Gamma: 1.0,
}
img, err := bImage.Process(options)
if err != nil {
return err, ""
}
newImage, err := bimg.NewImage(img).Convert(imageType)
if err != nil {
return err, ""
}
fileName := "xx." + bimg.ImageTypes[imageType] // 名称
filePath := filepath.Join(dir, fileName) // 路径
return bimg.Write(filePath, newImage), filePath
}
这样就欧克了,实测正常。
原文地址:https://blog.csdn.net/HYZX_9987/article/details/128736771
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_16585.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。