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);
}
效果:


