我需要打开一个图像并将其存储到普通数组中。只有打开和获取字节数据,我可以使用Qt,我需要使用普通的c ++。问题是我不知道该怎么做。我已经知道了:
QImage image;
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG"); // writes image into ba in PNG format
但说实话,我不明白它的作用。我打算做的是打开图像,将数据存储到QByteArray,然后将数据写入普通数组。
有人可以帮我理解怎么做吗?
答案 0 :(得分:0)
我不确定你是否在询问"""要做或者试图了解这段代码中实际发生了什么。我猜它是后者,因此我会尝试解释它。
您有一个QImage
,然后您有QByteArray
。
然后你创建一个QBuffer
来获取你之前创建的字节数组作为参数,open
它处于只写模式(因为你将写} em>数组中的字节。)
QImage有一个函数save,它获取缓冲区和格式(非强制性)。然后将图像转换为字节数组。这是这里的主要技巧,我想这让你感到困惑。
注意:我个人更喜欢将图像文件作为QFile
打开,并使用readAll()
将其读入原始字节。
QFile* imageFile = new QFile("image.png");
imageFile->open(QIODevice::ReadOnly);
QByteArray ba = imageFile->readAll();
imageFile->close();
delete imageFile;
之后,您甚至可以通过调用ba.data()
来访问其原始数据。
我希望有所帮助。