Golang : 如何读取 JPG(JPEG)、GIF 和 PNG 文件?
很难弄清楚为什么我所有打开和读取 JPG 或 JPEG 格式图像文件的尝试都会导致内存指针错误(当试图让 At() 和 Bounds() 函数工作时)。
在 Golang 中,必须先在 init() 部分注册格式,
然后才能尝试打开/读取图像文件并对文件执行操作。
下面的代码是关于如何打开和读取 JPEG/JPG 格式图像文件的简单指南:
package main
import (
"fmt"
"image"
"image/jpeg"
"os"
)
func init() {
// damn important or else At(), Bounds() functions will
// caused memory pointer error!!
image.RegisterFormat("jpeg", "jpeg", jpeg.Decode, jpeg.DecodeConfig)
}
func main() {
imgfile, err := os.Open("./img.jpg")
if err != nil {
fmt.Println("img.jpg file not found!")
os.Exit(1)
}
defer imgfile.Close()
img, _, err := image.Decode(imgfile)
fmt.Println(img.At(10, 10))
bounds := img.Bounds()
fmt.Println(bounds)
canvas := image.NewAlpha(bounds)
// is this image opaque
op := canvas.Opaque()
fmt.Println(op)
}
输出:
{255 128 128}
(0,0)-(760,479)
false
ps:
这也应该适用于 PNG 和 GIF 编码的图像。
相关文章