为了账号安全,请及时绑定邮箱和手机立即绑定

如何解码图像并将原始图像保留在 Go 中?

如何解码图像并将原始图像保留在 Go 中?

Go
临摹微笑 2022-10-10 19:29:26
json.Marshal当无法封送数据中的值时,该函数将失败。导致失败的唯一方法是引入一个用于测试的字段并在测试期间输入一个错误的值:type DocData struct {    …    Test       interface{} `json:"test,omitempty"`}…var induceFailure interface{}…docData.Test = induceFailuretxBytes, err := json.Marshal(docData)if err != nil {    return false, fmt.Errorf("failed docData bytes marshalling: %s", err.Error())}…func TestMarshlFail(t *testing.T) {    induceFailure = make(chan struct{})    defer func() {       induceFailure= nil    }()    …在该行代码上获得测试覆盖率可能不值得麻烦。与手头的问题无关,这里有一些对您的代码的改进。包装错误而不是将错误转换为字符串:return nil, fmt.Errorf("failed docData unmarshalling: %w", err)因为docData是指针,解组时不需要取值的地址。err := json.Unmarshal(txData, docData)
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

问题中的代码不会修改磁盘上的文件。


图像解码后的当前位置imageFile在文件开头的某个位置。要再次读取文件,请返回文件的开头:


 imageFile, err := os.Open("image.png")

 if err != nil { log.Fatal(err) }

 decodedImage, _, err := image.Decode(imageFile)

 if err != nil { log.Fatal(err) }


// Rewind back to the start of the file.

_, err := imageFile.Seek(0, io.SeekStart)

if err != nil { log.Fatal(err) }

// Do something with imageFile here.

将log.Fatal错误处理替换为适合您的应用程序的任何内容。


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 61 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信