可以将QImage文件内容加载到QString吗?

时间:2014-01-05 21:54:41

标签: c++ qt qstring qtgui qimage

是否可以使用QT加载图像文件的原始内容并将其作为QString?

我问的原因是因为我需要加载图像,加密图像数据然后将其发送到服务器。所以我需要从图像中读取原始数据并在发送之前执行rijndael-128加密。

谢谢!

2 个答案:

答案 0 :(得分:1)

图像数据不像QString,它有助于UTF字符的表示,因此这种转换想法听起来很奇怪。如果有的话,我建议用QByteArray和/或QDataStream发送原始文件数据。

无论哪种方式,以下是您可以用于原始问题的方法。这将是第一步,然后您可以构建您的QByteArray或QString。请注意,这些方法返回 unsigned char,而不是签名前面提到的类的构造函数。

  

uchar * QImage::bits()

     

返回指向第一个像素数据的指针。这相当于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吗?你做了大量的图像操作吗?