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

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

將 PNG 圖像轉換為原始 []byte Golang

將 PNG 圖像轉換為原始 []byte Golang

Go
墨色風雨 2022-11-08 16:07:24
我有一個 PNG 格式的圖像,它只是一個尺寸為 1x512 的數組。我需要沒有 PNG 格式的原始字節。如何在 Go 中將 PNG 轉換為原始字節。我有一些 python 代碼可以滿足我的需求,但我無法在 Go 中找到相同的功能:image = Image.open(io.BytesIO(features))array = np.frombuffer(image.tobytes(), dtype=np.float32)
查看完整描述

2 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

這是一個比您的解決方案更通用的解決方案。它使用圖像本身的尺寸而不是硬編碼值。


func imageToRGBA(img image.Image) []uint8 {

    sz := img.Bounds()

    raw := make([]uint8, (sz.Max.X-sz.Min.X)*(sz.Max.Y-sz.Min.Y)*4)

    idx := 0

    for y := sz.Min.Y; y < sz.Max.Y; y++ {

        for x := sz.Min.X; x < sz.Max.X; x++ {

            r, g, b, a := img.At(x, y).RGBA()

            raw[idx], raw[idx+1], raw[idx+2], raw[idx+3] = uint8(r), uint8(g), uint8(b), uint8(a)

            idx += 4

        }

    }

    return raw

}


查看完整回答
反對 回復 2022-11-08
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

我找到了一個解決方案:


請注意,這會在 x 軸上復制圖像中的值,并且 x 最大值為 512!


const FeatureVectorDimensionLength = 512


func imageToRaw(img image.Image) [2048]byte {

    var b [FeatureVectorDimensionLength*4]byte

    for i := 0; i < FeatureVectorDimensionLength; i++ {

        nrgba := img.At(i, 0).(color.NRGBA)

        idx := i*4

        b[idx], b[idx+1], b[idx+2], b[idx+3] = nrgba.R, nrgba.G, nrgba.B, nrgba.A

    }

    return b

}


查看完整回答
反對 回復 2022-11-08
  • 2 回答
  • 0 關注
  • 252 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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