Golang png Decode解析不了png图片

原创 2015年07月08日 14:20:00

之前微信公众号的后台服务端有一个BUG,导致某个菜单点击后无反应,本应返回图文消息,经查验,后台程序出现了异常,发现是png.Decode出现了问题,代码如下:


import (
    "code.google.com/p/freetype-go/freetype"
    "github.com/astaxie/beego"
    "image"
    "image/color"
    "image/draw"
    "image/png"
    "io"
    "io/ioutil"
    "log"
    "os"
    "strings"
    "time"
)

func main() {
    log.Println("true or false ? ", PrintImage("Hello World", 14))
}

... ...省略部分代码

func drawStringImage(text string, fontSize float64) (image.Image, error) {
    fImg1,err:=LoadImage("search_banner.png")
    if err != nil {
        log.Fatal(err)
    }
    ... ...省略部分代码
}

//加载图片
func LoadImage(path string) (img image.Image, err error) {
    file, err := os.Open(path)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()
    img, err = png.Decode(file)
    return
}

错误日志如下:

2015/07/08 10:24:09 &{0x1189a200}
2015/07/08 10:24:09 png: invalid format: not a PNG file

看传入的图片是png格式的呀,为什么会是不可用的格式?百思不得其解,包引用没问题,后面翻阅golang源码,发现源码测试时的实现方式跟我是一样的,这里排除了我代码本身的问题。

排除了所有不可能的问题后,剩下的就是唯一可能的,即图片资源本身存在问题,后面更换了一张从源码拿来的png文件来进行测试,果然,测试通过!

2015/07/08 10:31:08 &{0x1185a200}
2015/07/08 10:31:08 true or false ?  true

回想起来,原图片是通过jpg文件改后缀名变为png文件的,虽然电脑上能正常浏览图片,但是在通过代码解析依旧是jpg的,后面使用"image/jpeg"包来测试,果然也能通过,特此记录该问题,以防范发生同类问题,还难以查出原因。

golang中image/jpeg包和image/png包用法

jpeg包实现了jpeg图片的编码和解码 func Decode(r io.Reader) (image.Image, error)   //Decode读取一个jpeg文件,并将他作为image....
  • chenbaoke
  • chenbaoke
  • 2015年01月16日 19:24
  • 4331

PNG编解码实现---LodePNG

转载一篇关于PNG编解码实现的文章,并附有代码免费下载,跟大家分享一下!...
  • Trent1985
  • Trent1985
  • 2015年11月30日 09:57
  • 2748

Golang png Decode解析不了png图片

之前微信公众号的后台服务端有一个BUG,导致某个菜单点击后无反应,本应返回图文消息,经查验,后台程序出现panic,发现是png.Decode出现了问题,代码如下: import ( "cod...
  • ozygod
  • ozygod
  • 2015年07月08日 14:20
  • 581

golang中image包用法

image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述, image接口的值创建方式有如下几种: 1调用NewRG...
  • chenbaoke
  • chenbaoke
  • 2015年01月16日 20:33
  • 5022

使用Node.js解析PNG文件

使用Node的fs.createReadStream()可以创建一个文件读取流,在这里我使用的是Paused模式(Paused模式和Flowing模式可以看上一篇的介绍),通过stream.read(...
  • liuyaqi1993
  • liuyaqi1993
  • 2017年08月25日 11:55
  • 2106

png格式图片详解

PNG的文件结构    对于一个PNG文件来说,其文件头总是由位固定的字节来描述的:   其中第一个字节0x89超出了ASCII字符的范围,这是为了避免某些软件将PNG文件当做文本文件来处理。文件中剩...
  • bigapple88
  • bigapple88
  • 2010年05月17日 10:43
  • 9257

GoLang缩略图+beego项目

import ( "Server_sevenstudio/controllers" "github.com/astaxie/beego" "mime/mult...
  • qq_35594570
  • qq_35594570
  • 2017年04月20日 11:44
  • 134

golang缩略图

今天研究了golang生成缩略图的相关知识,在网上找到一篇不错的相关博客,博客地址:http://www.cnblogs.com/ghj1976/p/3445507.html。 有个注意事项这里提醒...
  • u013025612
  • u013025612
  • 2015年07月27日 22:35
  • 779

分析PNG图像结构

5.2.2  PNG图像文件存储结构(1) PNG文件存储结构的格式可以在http://www.w3.org/TR/REC-png.htm上找到定义。 BMP文件总体上由两部分组成,分别是PNG文...
  • joqian
  • joqian
  • 2012年12月13日 13:45
  • 2519

PNG文件结构最简单解析(生成)

PNG文件结构最简单解析(生成)前言 本想写个从.wdf提前资源的生成位图的程序,无奈.bmp没有A(透明色),.gif编码复杂,所以选择.png作为理想的图片格式,饶了许多弯路,发出来与各位分享...
  • kk1751413376
  • kk1751413376
  • 2016年02月29日 12:34
  • 3053
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Golang png Decode解析不了png图片
举报原因:
原因补充:

(最多只允许输入30个字)