登录
首页 >  Golang >  Go问答

如何确定 png“类型”(png8 / png24)

来源:stackoverflow

时间:2024-04-19 23:39:37 226浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面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)
}

您可以查看specs参考

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>