我正在用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