求助 golang image包 *image.Paletted.Palette 调色版 长度只能是256吗,超过256生成的图片报错

crown · · 859 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

```go package main import ( "fmt" "image" "image/color" "image/draw" _ "image/gif" _ "image/jpeg" "image/png" _ "image/png" "log" "os" ) func main() { img() } func img() { // 打开二维码 qrcode, err := os.Open("./code1.png") if err != nil { fmt.Println("二维码打开失败:", err) return } defer qrcode.Close() // 将二维码文件解码成图片 qrImg, _, err := image.Decode(qrcode) if err != nil { fmt.Println("图片解码失败:", err) } // 获取二维码的宽高 width, height := qrImg.Bounds().Max.X, qrImg.Bounds().Max.Y //qrImg.(*image.Paletted).Palette = append(qrImg.(*image.Paletted).Palette,color.RGBA{R:255,G:255,B:0,A:255}) // 打开要填充的图片 bgFile, err := os.Open("./bg.png") if err != nil { log.Fatalf("打开填充图失败 %s", err.Error()) return } defer bgFile.Close() // 将填充图解码成png图片 bgImg, _, err := image.Decode(bgFile) if err != nil { log.Fatalf("填充图解码失败 %s", err.Error()) return } for i := 1; i <= width; i++ { for j := 1; j <= height; j++ { switch qrImg.(type) { case *image.NRGBA: qrImg.(draw.Image).Set(i, j, color.RGBA{R: 255, G: 255, B: 0, A: 255}) case *image.RGBA: qrImg.(draw.Image).Set(i, j, color.RGBA{R: 255, G: 0, B: 0, A: 255}) case *image.Paletted: qrColor := bgImg.At(i, j) isExit := false for _, v := range qrImg.(*image.Paletted).Palette { if qrColor == v { isExit = true } } if !isExit { qrImg.(*image.Paletted).Palette = append(qrImg.(*image.Paletted).Palette, qrColor.(color.NRGBA)) } qrImg.(*image.Paletted).Set(i, j, qrColor.(color.NRGBA)) } } } filename := fmt.Sprintf("%s.png", "2022") // 写入文件 outFile, err := os.Create(filename) if err != nil { log.Fatal(err) } defer outFile.Close() _ = png.Encode(outFile, qrImg) } ``` 以上代码,我想根据bg.png的颜色然后替换code1.png的颜色,code1.png的类型是*image.Paletted 之前调用set方法 然后保存之后,图片只有黑白两个颜色,后面经过群里面的大佬提醒,需要把要加的颜色,向 qrImg.(*image.Paletted).Palette 调色板里面添加颜色 按照这样修改之后能够修改code1.png的颜色了,但是我又发现,只要 qrImg.(*image.Paletted).Palette 里面的值超过256 就还是会生成不了图片 有大佬能帮我看看这个问题了 我在论坛 文档上面都找遍了 都没有描述这个问题的 , 谢谢了

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

859 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2021-09-08 18:08:08
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传