Qt与mysql数据库的读写图片的简单操作

1.mysql数据库的表里面的某个存放图片的字段设置为blob【可变二进制数据类型】

2.写进去

        filePath = QFileDialog::getOpenFileName(this,"选择图片",".","Image File(*.png *.jpg *.jpeg *.bbmp)");

        QFileInfo info(filePath);
        fileName = info.fileName();

        //主要部分
        if(filePath.isEmpty())
            return;
        imagePic.load(filePath);
        QByteArray picData;
        QBuffer buffer(&picData);                    //相当于缓冲区【我也不太懂】
        buffer.open(QIODevice::WriteOnly);
        imagePic.save(&buffer,"jpg");
        QVariant var(picData);

        //往表里写数据【查了下网上推荐这种传参写法,有兴趣的自己百度下】
        QString sqlCmd = "insert into namePic(name,picture) values(:name,:picture)";
        query.prepare(sqlCmd);
        query.bindValue(":name",fileName);
        query.bindValue(":picture",var);
        if(!query.exec()){
            QMessageBox::information(0,QObject::tr("提示"),"照片写入失败");
        }else{
            qDebug()<<"照片写入成功";

        }

3.读出来

        QString sqlCmd = QString("select picture from namePic where name='%1'").arg(name);
        bool flag = query.exec(sqlCmd);
        if(flag){
            query.next();
            QPixmap photo,scaledPhoto;
            photo.loadFromData(query.value(0).toByteArray(),"jpg");
            scaledPhoto = photo.scaled(ui->labelPic->width(),ui->labelPic->height());        //按比例设置图片大小
            ui->labelPic->setPixmap(scaledPhoto);
        }

效果:

猜你喜欢

转载自blog.csdn.net/weixin_42470290/article/details/115101420