'utf-8' 编解码器无法解码位置 0 中的字节 0xff:起始字节无效/数据意外结束
'utf-8' codec can't decode byte 0xff in position 0: invalid start byte / unexpected end of data
我正在尝试使用 Qt 库(python 中的 Pyside2)将一些函数从 C++ 传递到 Python。目前一切正常,将代码从一侧传递到另一侧并将其调整为 Python,但是当我开始处理图像时发生错误。
我唯一实现的是正确解析图像的阴影,然而,图像的内部(对应于其余颜色的部分)是空心的。
我应该得到这个
但我得到了这个
每次我处理这些字节时,程序都会崩溃并出现以下错误。
'utf-8' codec can't decode byte 0x87 in position 0: invalid start byte
'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
'utf-8' codec can't decode byte 0xcb in position 0: unexpected end of data
调试程序我发现只有与颜色对应的字节会导致程序崩溃,无法知道像素的RGBA。问题一定是我在 Python 中获取 GB 和 AR 的方式,因为原始 C++ 程序在任何像素中都没有这个问题。
我是处理字节和字节数组的新手。你认为我获得 GB 和 AR 可能是错误的还是你怎么看?
谢谢大家!
这是C++中的原始函数:
QImage ImageConverter::convertGBAR4444(QByteArray &array, int width, int height, int startByte)
/// GBAR = ARGB (endianness)
{
qDebug() << "Opened GBAR4444 image.";
QImage img(width, height, QImage::Format_ARGB32);
img.fill(Qt::transparent);
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
uchar gb = array.at(startByte + y * 2 * width + x * 2);
uchar ar = array.at(startByte + y * 2 * width + x * 2 + 1);
uchar g = gb >> 4;
uchar b = gb & 0xF;
uchar a = ar >> 4;
uchar r = ar & 0xF;
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11));
}
}
return img;
}
这是我的项目 Python 版本的代码:
from PySide2 import QtGui
from PySide2.QtGui import QImage, qRgba, qRgb
def convertGBAR4444(array, width, height, startByte = 0):
y = 0
img = QImage(width, height, QImage.Format_ARGB32)
img.fill(QtGui.QColor(0,0,0,0))
while (y < height):
x = 0
while (x < width):
gb = ord(array.at(startByte + y * 2 * width + x * 2))
ar = ord(array.at(startByte + y * 2 * width + x * 2 + 1))
g = gb >> 4
b = gb & 0xF
a = ar >> 4
r = ar & 0xF
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11))
x += 1
y += 1
return img
如果您想自己尝试,这是您需要的数据:
convertGBAR4444(data, 32, 32, 13)
data = b'\x01 \x00 \x00\x10\x00\x10\x00\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11U"\x873\xbaD\xcbD\xcbD\xcb3\xa8"\x87\x00B\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\x87f\xff\xca\xff\xdb\xff\xca\xff\xeb\xff\xeb\xff\xdb\xff\xca\xff\x
b9\xffU\xffD\xdb\x00B\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11D\xdcU\xff\xa9\xff\xfc
\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xec\xffv\xffU\xffU\xfe"\x86\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x003\xbaU\xffU\xffU\xff\xb9\xff\xfc\xff\xb9\xff\x98\xffe\xffU\xffU\xffU\xffU\xffU\xffU\xffD\xfe\x11\x95\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"fU\xff\xba\xff\xfc\xff\x98\xffU\xffU\xffU\xffD\xfeD\xfdD\xfdD\xfdU\xffU\xffU\xffU\xffD\xfe3\xfc\x00r\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xdc\xa9\xff\xfc\xff\xfc\xff\xa8\xffU\xffD\xfe3\xfd3\xfc3\xfc3\xfc3\xfc3\xfcD\xfdU\xffU\xffU\xffD\xfd"\xc7\x00@\x00\x10\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"U\xff\xec\xff\xfc\xff\xfc\xffv\xffD\xfe3\xfc3\xfb"\xd7"\xd83\xfb3\xfc3\xfc3\xfcU\xffU\xffU\xffD\xfe3\xea\x00`\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"vU\xff\xa9\xff\xfc\xff\xa9\xffU\xffD\xfd3\xea\x00\x90\x00\x80\x00p\x00p3\xfb3\xfc3\xfcU\xffU\xffU\xffD\xfe
3\xea\x00p\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11TU\xfeU\xffU\xffU\xffD\xfeU\xff"\xc6\x00p\x00P\x000\x00@3\xec3\xfc3\xfcU\xffU\xffU\xffD\
xfe3\xfb\x00\x81\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00RD\xfeU\xffU\xffU\xff3\xd9\x00\x81\x00P\x00 \x00 3\xbaD\xfd3\xfcD\xfeU\xff
U\xffU\xffD\xfd"\xd8\x00p\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00@\x00`\x00p\x00p\x00`\x00P\x000\x00!D\xdcD\xfe3\xfcD\xfeU\xf
fU\xffU\xffD\xfe3\xfb\x00\xa1\x00`\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x000\x000\x000\x00 \x11CU\xfeU\xffD\xf
eU\xffU\xffU\xffU\xffD\xfe3\xfb\x11\xc5\x00p\x00@\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x10\x
00\x10\x11CU\xfeU\xffU\xffU\xffU\xffU\xffU\xffD\xfd3\xfc\x11\xb3\x00p\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x11D\xedU\xffU\xffU\xffU\xffU\xffU\xff3\xfc3\xfb\x11\xb3\x00p\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"fU\xffU\xffU\xffU\xffU\xffU\xffD\xfe3\xfb\x00\xb2\x00p\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xccU\xffU\xffU\xffU\xffU\xffU\xff3\xfa"\xe9\x00\x80\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xeeU\xffU\xffU\xffU\xffU\xffD\xfd3\xfb\x11\xc5\x00`\x000\x
00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\xcaD\xfc3\xfc3\xfc3
\xfc3\xfc3\xfb"\xe8\x00\x81\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x000\x00a\x00\x81\x00\x91\x00\x91\x00\x91\x00\x91\x00\x81\x00P\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11C"\x863\xca3\xda"\xc8\x11\x93\x00r\x00P\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10U\xff\xa9\xff\xa8\xffU\xffU\xffD\xfdD\xfd\x00@\x00 \x00\x10\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\xcb\x98\xff\xfc\xff\xeb\x
ffU\xffU\xffD\xfe3\xfc\x11\xa5\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00U\xffe\xff\xb9\xffv\xffU\xffU\xffD\xfe3\xfc3\xea\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10U\xffU\xffU\xffU\xffU\xffU\xff3\xfc3\xfc3\xfb\x00`\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x103\xba3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc"\xd7\x00`\x000\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0003\xfc3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc\x00\x90\x00
P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x000
3\xda3\xfc3\xfc3\xfc3\xea\x00\x90\x00`\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x000\x00P\x00p\x00p\x00p\x00`\x00@\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x000\x000\x000\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x10\x00\
x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
您发布的代码无法运行,因为有几个错误,但是 none 这会导致您看到错误消息。
这是修复了这些错误的代码。这应该有效(尽管它不适用于您提供的数据,因为它被截断了):
def convertGBAR4444(array, width, height, startByte = 0):
img = QImage(width, height, QImage.Format_ARGB32)
img.fill(QtGui.QColor(0,0,0,0))
for y in range(height):
for x in range(width):
gb = array[startByte + y * 2 * width + x * 2]
ar = array[startByte + y * 2 * width + x * 2 + 1]
#print(gb, ar)
g = gb >> 4
b = gb & 0xF
a = ar >> 4
r = ar & 0xF
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11))
return img
我正在尝试使用 Qt 库(python 中的 Pyside2)将一些函数从 C++ 传递到 Python。目前一切正常,将代码从一侧传递到另一侧并将其调整为 Python,但是当我开始处理图像时发生错误。
我唯一实现的是正确解析图像的阴影,然而,图像的内部(对应于其余颜色的部分)是空心的。
我应该得到这个
但我得到了这个
每次我处理这些字节时,程序都会崩溃并出现以下错误。
'utf-8' codec can't decode byte 0x87 in position 0: invalid start byte
'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
'utf-8' codec can't decode byte 0xcb in position 0: unexpected end of data
调试程序我发现只有与颜色对应的字节会导致程序崩溃,无法知道像素的RGBA。问题一定是我在 Python 中获取 GB 和 AR 的方式,因为原始 C++ 程序在任何像素中都没有这个问题。
我是处理字节和字节数组的新手。你认为我获得 GB 和 AR 可能是错误的还是你怎么看?
谢谢大家!
这是C++中的原始函数:
QImage ImageConverter::convertGBAR4444(QByteArray &array, int width, int height, int startByte)
/// GBAR = ARGB (endianness)
{
qDebug() << "Opened GBAR4444 image.";
QImage img(width, height, QImage::Format_ARGB32);
img.fill(Qt::transparent);
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
uchar gb = array.at(startByte + y * 2 * width + x * 2);
uchar ar = array.at(startByte + y * 2 * width + x * 2 + 1);
uchar g = gb >> 4;
uchar b = gb & 0xF;
uchar a = ar >> 4;
uchar r = ar & 0xF;
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11));
}
}
return img;
}
这是我的项目 Python 版本的代码:
from PySide2 import QtGui
from PySide2.QtGui import QImage, qRgba, qRgb
def convertGBAR4444(array, width, height, startByte = 0):
y = 0
img = QImage(width, height, QImage.Format_ARGB32)
img.fill(QtGui.QColor(0,0,0,0))
while (y < height):
x = 0
while (x < width):
gb = ord(array.at(startByte + y * 2 * width + x * 2))
ar = ord(array.at(startByte + y * 2 * width + x * 2 + 1))
g = gb >> 4
b = gb & 0xF
a = ar >> 4
r = ar & 0xF
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11))
x += 1
y += 1
return img
如果您想自己尝试,这是您需要的数据:
convertGBAR4444(data, 32, 32, 13)
data = b'\x01 \x00 \x00\x10\x00\x10\x00\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11U"\x873\xbaD\xcbD\xcbD\xcb3\xa8"\x87\x00B\x00\x10\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"\x87f\xff\xca\xff\xdb\xff\xca\xff\xeb\xff\xeb\xff\xdb\xff\xca\xff\x
b9\xffU\xffD\xdb\x00B\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11D\xdcU\xff\xa9\xff\xfc
\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xfc\xff\xec\xffv\xffU\xffU\xfe"\x86\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x003\xbaU\xffU\xffU\xff\xb9\xff\xfc\xff\xb9\xff\x98\xffe\xffU\xffU\xffU\xffU\xffU\xffU\xffD\xfe\x11\x95\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"fU\xff\xba\xff\xfc\xff\x98\xffU\xffU\xffU\xffD\xfeD\xfdD\xfdD\xfdU\xffU\xffU\xffU\xffD\xfe3\xfc\x00r\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xdc\xa9\xff\xfc\xff\xfc\xff\xa8\xffU\xffD\xfe3\xfd3\xfc3\xfc3\xfc3\xfc3\xfcD\xfdU\xffU\xffU\xffD\xfd"\xc7\x00@\x00\x10\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"U\xff\xec\xff\xfc\xff\xfc\xffv\xffD\xfe3\xfc3\xfb"\xd7"\xd83\xfb3\xfc3\xfc3\xfcU\xffU\xffU\xffD\xfe3\xea\x00`\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"vU\xff\xa9\xff\xfc\xff\xa9\xffU\xffD\xfd3\xea\x00\x90\x00\x80\x00p\x00p3\xfb3\xfc3\xfcU\xffU\xffU\xffD\xfe
3\xea\x00p\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11TU\xfeU\xffU\xffU\xffD\xfeU\xff"\xc6\x00p\x00P\x000\x00@3\xec3\xfc3\xfcU\xffU\xffU\xffD\
xfe3\xfb\x00\x81\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00RD\xfeU\xffU\xffU\xff3\xd9\x00\x81\x00P\x00 \x00 3\xbaD\xfd3\xfcD\xfeU\xff
U\xffU\xffD\xfd"\xd8\x00p\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00@\x00`\x00p\x00p\x00`\x00P\x000\x00!D\xdcD\xfe3\xfcD\xfeU\xf
fU\xffU\xffD\xfe3\xfb\x00\xa1\x00`\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x000\x000\x000\x00 \x11CU\xfeU\xffD\xf
eU\xffU\xffU\xffU\xffD\xfe3\xfb\x11\xc5\x00p\x00@\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x10\x
00\x10\x11CU\xfeU\xffU\xffU\xffU\xffU\xffU\xffD\xfd3\xfc\x11\xb3\x00p\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x11D\xedU\xffU\xffU\xffU\xffU\xffU\xff3\xfc3\xfb\x11\xb3\x00p\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0
0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"fU\xffU\xffU\xffU\xffU\xffU\xffD\xfe3\xfb\x00\xb2\x00p\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xccU\xffU\xffU\xffU\xffU\xffU\xff3\xfa"\xe9\x00\x80\x00P\x00 \x00\x10\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00D\xeeU\xffU\xffU\xffU\xffU\xffD\xfd3\xfb\x11\xc5\x00`\x000\x
00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\xcaD\xfc3\xfc3\xfc3
\xfc3\xfc3\xfb"\xe8\x00\x81\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x000\x00a\x00\x81\x00\x91\x00\x91\x00\x91\x00\x91\x00\x81\x00P\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11C"\x863\xca3\xda"\xc8\x11\x93\x00r\x00P\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10U\xff\xa9\xff\xa8\xffU\xffU\xffD\xfdD\xfd\x00@\x00 \x00\x10\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x003\xcb\x98\xff\xfc\xff\xeb\x
ffU\xffU\xffD\xfe3\xfc\x11\xa5\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00U\xffe\xff\xb9\xffv\xffU\xffU\xffD\xfe3\xfc3\xea\x00P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10U\xffU\xffU\xffU\xffU\xffU\xff3\xfc3\xfc3\xfb\x00`\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x103\xba3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc"\xd7\x00`\x000\x00\x00\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0003\xfc3\xfc3\xfc3\xfc3\xfc3\xfc3\xfc\x00\x90\x00
P\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x000
3\xda3\xfc3\xfc3\xfc3\xea\x00\x90\x00`\x000\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x000\x00P\x00p\x00p\x00p\x00`\x00@\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00 \x000\x000\x000\x00 \x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x
00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x10\x00\
x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
您发布的代码无法运行,因为有几个错误,但是 none 这会导致您看到错误消息。
这是修复了这些错误的代码。这应该有效(尽管它不适用于您提供的数据,因为它被截断了):
def convertGBAR4444(array, width, height, startByte = 0):
img = QImage(width, height, QImage.Format_ARGB32)
img.fill(QtGui.QColor(0,0,0,0))
for y in range(height):
for x in range(width):
gb = array[startByte + y * 2 * width + x * 2]
ar = array[startByte + y * 2 * width + x * 2 + 1]
#print(gb, ar)
g = gb >> 4
b = gb & 0xF
a = ar >> 4
r = ar & 0xF
img.setPixel(x, y, qRgba(r * 0x11, g * 0x11, b * 0x11, a * 0x11))
return img