当前位置: > > > > 如何确定 png“类型”(png8 / png24)
来源:stackoverflow
2024-04-19 23:39:37
0浏览
收藏
怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何确定 png“类型”(png8 / png24)》,涉及到,有需要的可以收藏一下
问题内容
我正在使用 image
包来解码图像并确定其格式(例如 jpg 或 png),但是我希望更深入,我想知道该 png 实际上是 png8
还是 png24
。
使用 go 执行此操作的正确方法是什么?
(更新1)
目前我正在阅读能够解码图像的内容,我想知道如何从这里获取颜色模型:
fname := "img.jpg" f, err := os.Open(fname) _, format, err := image.Decode(f) if err != nil { log.Fatal(err) } fmt.Println(format, "format")
解决方案
试试这个,只要记住它没有健全性检查
package main import ( "errors" "fmt" _ "image/png" "os" ) func pngType(f *os.File) (string, error) { f.Seek(24, 0) b := make([]byte, 1) f.Read(b) c := make([]byte, 1) f.Read(c) bitDepth := b[0] colorType := c[0] if bitDepth == 8 && colorType == 3 { return "PNG8", nil } if bitDepth == 8 && colorType == 2 { return "PNG24", nil } if bitDepth == 8 && colorType == 6 { return "PNG32", nil } return "", errors.New("unknown_type") } func main() { f, _ := os.Open("img.png") t, _ := pngType(f) fmt.Printf("The type is `%s`.\n", t) }
您可以查看参考
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注公众号,一起学习编程~