QT图片转Base64数据 与 Base64转图片

图片转Base64数据

    m_imagePath = QFileDialog::getOpenFileName(this, tr("select image"), "./pic/",
                                               tr("Image Files(*.jpeg *.jpg *.png *.bmp *.pgm *.pbm);;All(*.*)"));  //选择图片
    ui->imageDataPath->setText(m_imagePath);  //将图片路径显示在文本框
    logDebug("selected image, FilePath is :" + m_imagePath);
    QImage *img = new QImage;
    if( !(img->load(m_imagePath)) )   //如果图片不存在
    {
        logDebug("open image fail");
        QMessageBox::information(this, "EError", "open image fail");
        m_isRequired = false;
        delete img;
        return;
    }
    QFileInfo imageInfo = QFileInfo(m_imagePath);   
    QString sImgSuffix = imageInfo.suffix(); //获取图片文件后缀
    logDebug("imgSuffix :" + sImgSuffix);
    QByteArray baImgSuffix = sImgSuffix.toLatin1(); //将后缀QString转char *
    QByteArray baImgData; //保存图片数据的字符数组
    QBuffer buf(&baImgData);  //将字符数组与buffer缓存区绑定,以便写入数据
    //原型为 img->save(&buf, "jpg"),将图片以JPG格式写入buffer; 但有时候所选图片后缀为其他格式,为避免错误,选择用获取图片后缀方式填写,类型为char* 
    img->save(&buf, baImgSuffix.data());
    QByteArray baImgToHexed = baImgData.toBase64(); //因为缓存已与baImgData绑定,故缓存的数据也绑定在baImgData中
    buf.close();  
    QString sImgB64Data(baImgToHexed); //将Base64转QString
    logDebug("image base64 data is :" + sImgB64Data);
    m_mapReqContent["imageData"] = sImgB64Data;

Base64转图片

	QString Base64Str ="" ; //Base6格式数据吗(太长,已省略)
    QLabel *lab = new QLabel("picture");
    lab->showNormal();
    lab->setGeometry(500,500,500,500); //设置label位置,(x,y,width,height)
    lab->setFixedSize(500, 500); //这只label固定大小
    QPixmap Baseimage;
    Baseimage.loadFromData(QByteArray::fromBase64(Base64Str.toLatin1()));
    QPixmap scaledPixmap = Baseimage.scaled(500, 500, Qt::KeepAspectRatio);  //设置图片大小并设置为按比例缩放
    lab->setAlignment(Qt::AlignCenter); //label内容居中
    lab->setPixmap(scaledPixmap); //label放置图片并显示
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值