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

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

decode & encode PNG files

  • 2006年02月23日 09:05
  • 206KB
  • 下载

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

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

libpng解析png图片,用SDL显示

跟上一篇解析 显示解析并显示 bmp 类似,这次的对象是 24位(带rgba)的 png. 不同的是 bmp 格式比较简单,是自己写代码解析的.png 格式比较复杂,使用了libpng. 在此快速...

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

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

IE显示不了PNG的解决办法

  • 2011年07月23日 10:19
  • 28KB
  • 下载

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

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

通过文件二进制信息判断图片类型(png,jpg,gif)

package lab.sodino.img; import java.io.IOException; import java.io.InputStream; import javax.microed...

VC下加载JPG/GIF/PNG图片的两种方法(转)

本文转自 http://blog.sina.com.cn/s/blog_6582aa410100huil.html。 仅管VC有提供相应的API和类来操作bmp位图、图标和(增强)元...

Android 获取图片资源格式(png、jpeg、gif、bmp、...)

做开发的时候有时候需要获取图片的类型格式,如常见的jpg、png、gif、bmp等图片格式。 那么在Android中如何获得这些图片格式呢? 方法一:通过图片后缀名获得图片格式 大多数方法都是通...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Golang png Decode解析不了png图片
举报原因:
原因补充:

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