返回顶部
首页 > 资讯 > 后端开发 > GO >image.Decode 在 golang 嵌入上失败
  • 806
分享到

image.Decode 在 golang 嵌入上失败

2024-04-05 00:04:02 806人浏览 安东尼
摘要

大家好,我们又见面了啊~本文《image.Decode 在 golang 嵌入上失败》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章

大家好,我们又见面了啊~本文《image.Decode 在 golang 嵌入上失败》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

该程序的目的是解码嵌入有“embed”的img。 图像 (bu.png) 位于 ma​​in.go 的同一目录中。

  • 嵌入方式似乎无法设置完全相同的资源
package main

import (
    "bytes"
    _ "embed"
    "image"
)

var (
    //go:embed bu.png
    img []byte
)

func main() {

    a  := bytes.NewBuffer(img)
    a, b, e := image.Decode()
    println(e.Error())
    //  image: unknown fORMat

    println(b)
    //

    println(a)
    // (0x0,0x0)

    // println(string(img))
    // the text of the image seem a little different between nano

}

图像数据应位于 img 变量中,导致“嵌入”导入


正确答案


这不是 embed 的事情。 You have to import the individual libraries you want to support. 它们的初始化将注册其格式以供 image.decode 使用。引用上述链接,

解码任何特定的图像格式都需要事先注册解码器函数。

尝试添加导入,例如,

_ "image/png"

我使用以下内容对此进行了测试,这应该让您相信 embed 是无关紧要的:

package main

import (
    _ "embed"
    "fmt"
    "bytes"
    "image"
    //_ "image/png"
    //_ "image/jpeg"
    //_ "image/gif"
    "os"
)

var (
    //go:embed bu.png
    img []byte
)

func main() {
    f, err := os.Open("bu.png")
    if err != nil {
        panic(fmt.Errorf("Couldn't open file: %w", err))
    }
    defer f.Close()
    fmt.Println(image.Decode(f))
    buf := bytes.NewBuffer(img)
    fmt.Println(image.Decode(buf))

}

理论要掌握,实操不能落!以上关于《image.Decode 在 golang 嵌入上失败》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: image.Decode 在 golang 嵌入上失败

本文链接: https://lsjlt.com/news/596023.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作