繁体   English   中英

将QImage保存到字节数组

[英]Save QImage to array of bytes

我需要打开一个图像并将其字节存储到普通数组中。 只有打开和获取字节数据,我才能使用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,然后将其写入普通数组。

有人可以帮我理解该怎么做吗?

我不确定您是在问“怎么做”还是试图理解这段代码中实际发生的事情。 我猜是后者,所以我会尽力解释。

您有一个QImage ,然后您有一个QByteArray

然后创建一个QBuffer它让你早已经作为一个参数创建的字节数组, open的IT在只写模式(因为你会字节到数组)。

QImage具有保存功能,该功能获取缓冲区和格式(非强制性)。 然后将图像转换为字节数组。 这是这里的主要窍门,我想是什么让您感到困惑。

注意:我个人更喜欢将图像文件作为QFile打开,并使用readAll()其读取为原始字节。

QFile* imageFile = new QFile("image.png");
imageFile->open(QIODevice::ReadOnly);
QByteArray ba = imageFile->readAll();
imageFile->close();
delete imageFile;

之后,您甚至可以通过调用ba.data()来访问其原始数据。

希望对您有所帮助。

您可以在此处阅读有关QImage :: save函数的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM