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/draw包用法

draw包提供了图片的生成方法,或者绘制方法.其使用方法只需导入响应的包即可"import image/draw" func Draw(dst Image, r image.Rectangl...

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

jpeg包实现了jpeg图片的编码和解码 func Decode(r io.Reader) (image.Image, error)   //Decode读取一个jpeg文件,并将他作为image....

golang中image包用法

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

图片处理方法汇总imagemagick-Golang

图片处理方法汇总imagemagick-Golang

decode & encode PNG files

  • 2006-02-23 09:05
  • 206KB
  • 下载

使用 Libpng 配合 GDI 完成对 png 图片的解析与显示

 第一步: 使用 libpng 完成对 png 图像的解析 在上一篇 《VC6 下 libpng 库的编译与初步使用》 中我们已经完成了对 libpng 库的编译与配置, 今天就来用它来实现对...

Android屏幕适配、App瘦身之.9.png图片原理及用法解析

.9,是andriod平台应用软件开发里的一种特殊的图片形式,文件扩展名为: .9.png,点九图片可以将图片横向和纵向同时进行局部拉伸,解决图片拉伸而边角模糊失真等问题,使用了.9.png图片技术后...

动态生成PNG格式的图片直接嵌在ASP.NET网页中

 前几天接到一个需求,要为某个产生单据的网页里增加单据流水号的条码。生成条码的算法是现成的,只要把条码图片展示在流水号文字之下就行。 本想用jQuery的ajax调用ashx返回二进制流,...
  • ki1381
  • ki1381
  • 2014-06-29 20:40
  • 2923

.9.png图片属性

前言:9 patch png 图片,扩展名为.9.png,是一个标准的PNG图像,它包括额外的1个像素的边界,通过对这个边界的描述来达到我们预期的拉伸效果。android引入这种png的扩展格式来解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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