1 将圖檔轉為QByteArray傳輸
QBuffer buffer;
buffer.open(QIODevice::ReadWrite);//pixmap不能為空,必須先将圖檔加載到pixmap中
pixmap.save(&buffer,"jpg");
QByteArray pixArray;
pixArray.append(buffer.data());
2 将QByteArray轉為圖檔顯示
//假設記憶體中的圖檔為bytearr
string bytearr = “\\377\\330\\377\\340\\000\\020JFIF\\000\\001\\001\\000\\000\\001\\000\\001\\000\\000\\377\\333\\000C\\000\\n\\007\\007\\010\\007\\006\\n\\010\\010\\010\\013\\n\\n\\013\\016\\030\\020”;
QByteArray array;
// std::string => QByteArray
array(bytearr.c_str(), bytearr.length());
QBuffer buffer(&array);
buffer.open(QIODevice::ReadOnly);
QImageReader reader(&buffer,"JPG");
QImage img = reader.read();
if(!img.isNull()){
QPixmap pix = QPixmap::fromImage(img);
ui->showImageLabel->setPixmap(pix.scaled(ui->showImageLabel->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));
}
std :: string到QByteArray的轉換
PS: QString隻有在資料是文本的時候才能使用,而不是二進制的。
C風格
// std::string => QByteArray
QByteArray byteArray(stdString.c_str(), stdString.length());
// QByteArray => std::string
std::string stdString(byteArray.constData(), byteArray.length());
從Qt 5.4開始,通過和QByteArray建立了對std::string轉換的支援。
QByteArray::toStdString() QByteArray::fromStdString()
inline std::string QByteArray::toStdString() const
{ return std::string(constData(), length()); }
inline QByteArray QByteArray::fromStdString(const std::string &s)
{ return QByteArray(s.data(), int(s.size())); }