亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么選擇高朗編碼方法使顏色數據出錯?

為什么選擇高朗編碼方法使顏色數據出錯?

Go
慕的地8271018 2022-10-04 15:51:55
在高浪中,當像素值帶有 alpha 值時,會導致顏色值發生變化。我在python中嘗試了相同的代碼。沒關系!這是高浪腳本:newRgba := image.NewRGBA(image.Rect(0, 0, 1, 1)) //new imagenewRgba.SetRGBA(0, 0, color.RGBA{R: 55, G: 23, B: 14, A: 122}) // set pixel valuef, _ := os.Create("./save.png")defer f.Close()// save imagepng.Encode(f, newRgba)ff, _ := ioutil.ReadFile("./save.png") //read imagebbb := bytes.NewBuffer(ff)m, _, _ := image.Decode(bbb)R, G, B, A := m.At(0, 0).RGBA()fmt.Println(R>>8,    G>>8,    B>>8,    A>>8,) // get {55 23 13 122} , it is wrong! Why not {55 23 14 122} ?這是蟒蛇腳本:from PIL import Imageimg = Image.new('RGBA', (1, 1), (55, 23, 14,122)) # set pixel valueimg.save('bg.png')im = Image.open('bg.png')pix = im.load()print(pix[0,0])  // get (55, 23, 14, 122)為什么在高浪獲得的結果會改變?
查看完整描述

1 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

顏色。RGBA 代表一種阿爾法預乘顏色。對于預乘法顏色,alpha 分量表示 R/G/B 分量可以采用的最大值。因此,用阿爾法122表示白色。color.RGBA{122,122,122,122}

嗚嗚嗚。解碼返回未預乘的 。當顯示像素類型時,這一點會更清晰。例如:image.NRGBA

fmt.Printf("%#v\n", m.At(0, 0))
// color.NRGBA{R:0xff, G:0xff, B:0xff, A:0x7a}

您的示例在使用類型時將起作用。NRGBA

請參閱此運行示例:https://play.golang.org/p/69bvYQfkCA_P

Before: color.NRGBA: {55 23 14 122}
After:  color.NRGBA: {55 23 14 122}



查看完整回答
反對 回復 2022-10-04
  • 1 回答
  • 0 關注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號