QPixmap, QByteArray, QString互相转换


  QString filename = QDir::homePath() + "/Desktop/TOF.png";
  QImage* img = new QImage;
  if(!(img->load(filename))) //加载图像
  {
    QMessageBox::information(this, tr("打开图像失败"), tr("打开图像失败!"));
        delete img;
        return;
  }
  //QPixmap->QByteArray
  QPixmap pixmap = QPixmap::fromImage(*img);
  QByteArray byteArray = QByteArray();
  QBuffer buffer(&byteArray);
  buffer.open(QIODevice::WriteOnly);
  pixmap.save(&buffer,"png",0);
  //QByteArray->QString
  QString str2 = QString(byteArray.toBase64());
  printf("%s", str2.toStdString()); 
  //QString->QByteArray
  QByteArray byteArray = QByteArray::fromBase64(str2.toLocal8Bit();
  //QByteArray->QPixmap
  QPixmap pix; 
  pix.loadFromData(byteArray, "png");

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中的代码是将图片转换为QByteArray的代码。首先,使用QPixmap的load函数加载图片。如果加载成功,接下来创建一个QBuffer对象,并以写入模式打开。然后,使用pixmap的save函数将图片保存到buffer中,并将buffer的数据追加到pixArray中。最后,关闭buffer。这样就将图片转换为了QByteArray。 引用\[2\]中的代码是将QByteArray转换为图片的接口实现。首先,将QByteArray转换为QBuffer对象,并以只读模式打开。然后,使用QImageReader读取buffer中的数据,并将其转换为QImage对象。如果读取成功,将QImage对象传递给fromImage函数进行处理。最后,返回转换后的QPixmap对象。 引用\[3\]中的代码是将16进制字符串转换为字节的示例。使用QString的toUtf8函数将字符串转换为字节数组。 根据以上引用内容,如果你想将QByteArray转换为其他类型的数据,可以根据具体的需求使用相应的函数或方法进行转换。 #### 引用[.reference_title] - *1* *2* [图片QPixmap和QByteArray之间的互——Qt](https://blog.csdn.net/xiaopei_yan/article/details/123636555)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [QByteArray的一些函数转换使用](https://blog.csdn.net/yinchengkai/article/details/124301910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值