是否可以使用QT加载图像文件的原始内容并将其作为QString?
我问的原因是因为我需要加载图像,加密图像数据然后将其发送到服务器。所以我需要从图像中读取原始数据并在发送之前执行rijndael-128加密。
谢谢!
答案 0 :(得分:1)
图像数据不像QString,它有助于UTF字符的表示,因此这种转换想法听起来很奇怪。如果有的话,我建议用QByteArray和/或QDataStream发送原始文件数据。
无论哪种方式,以下是您可以用于原始问题的方法。这将是第一步,然后您可以构建您的QByteArray或QString。请注意,这些方法返回 unsigned char,而不是签名前面提到的类的构造函数。
返回指向第一个像素数据的指针。这相当于scanLine(0)。
请注意,QImage使用隐式数据共享。此函数执行共享像素数据的深层副本,从而确保此QImage是唯一使用当前返回值的QImage。
const uchar * QImage::bits() const
这是一个重载功能。
const uchar * QImage::constBits() const
返回指向第一个像素数据的指针。
请注意,QImage使用隐式数据共享,但此函数不执行共享像素数据的深层复制,因为返回的数据是const。
答案 1 :(得分:0)
使用QImage::bits()或QImage::constBits()获取二进制(未压缩)图像数据。
请参阅此处函数FreedesktopImage::FreedesktopImage(const QImage &img)
中的示例:
https://github.com/laanwj/bitcoin/blob/master/src/qt/notificator.cpp#L119了解如何将数据复制到QByteArray
。
但问题是,你真的需要在加密之前将图像文件加载到QImage
吗?你做了大量的图像操作吗?