我正在用golang從視頻遊戲控制檯讀取framebuffer - 緩衝區格式爲BRGA(然後我轉換爲RGBA)。當我將信息傳遞到Go PNG Encoder時,出來的圖像無效。我使用的代碼爲 - ,其中:PNG編碼產生損壞的圖像
其中
data
是RGBA像素的切片 - 0x398000在長度,pitch
爲5120,width
是1270,和height
是720)
img := &image.RGBA{
Pix: data,
Stride: pitch,
Rect: image.Rect(0, 0, width, height),
}
os.Remove("./img.png")
file, _ := os.Create("./img.png")
defer file.Close()
filewriter := bufio.NewWriter(file)
if err := png.Encode(filewriter, img); err != nil {
panic(err)
}
但實際的結果是(只在Windows上或當在Chrome中查看..奇怪):
我已經上傳了RGBA片的二進制轉儲,如果有人希望它 - https://1drv.ms/u/s!Ak-aZ3z7Ea8KwvUsqdP5OgWpZqxsGA
我希望原始數據的大小爲:1270 * 720 * 4 == 3657600字節。提供的二進制轉儲文件的大小爲3768320(或者您提到的0x398000)。你確定提供的數據實際上只是原始像素值嗎? – Omar
轉儲的長度是Xbox提供的'framebuffersize'。 –
您能否提供更多關於如何獲取數據轉儲的信息?如果它是原始RGBA像素值,您的代碼應該可以工作。 – Omar