我可以将 PIL 图像数组保存到 Qt 中吗?

Can I save PIL image array into Qt?

我想保存PIL图像。 我试着用泡菜来做,我能做到。 比如我想按QtCore.QDataStream.

保存

我可以做吗?

原代码如下:

from PIL import Image
import numpy as np
import pickle

filename = 'Any_Image.png'

im = Image.open(filename)
data = np.array(im)

f = open("test_file.dat","wb")
print(type(data))
dumps = pickle.dump(data,f)

f = open("test_file.dat","rb")
tumps = pickle.load(f)
array = Image.fromarray(tumps)
array.show()

你可以用 QDataStream 做类似的事情,只是你需要将图像 numpy array 转换为 bytes

这是一个简单的实现:

from PIL import Image
import numpy as np
from PyQt5 import QtCore

filename = 'Goku.jpg'

im = Image.open(filename)
data = np.array(im)

file_ = QtCore.QFile("test_file.dat")
file_.open(QtCore.QIODevice.WriteOnly)
qdatastream = QtCore.QDataStream(file_)
bytedata = QtCore.QByteArray(data.tobytes())

print(qdatastream)

qdatastream << bytedata