sqlite blob存取image并显示到pictureBox上

保存到数据库(关键代码):

  SQLiteParameter[] sqlParameters = {
                                                      new SQLiteParameter("@buyPicture",DbType.Binary),
                                                      new SQLiteParameter("@salePicture",DbType.Binary)
                                               };
            MemoryStream mstream = new MemoryStream();
            dSkinPictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] byData = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(byData, 0, byData.Length);
            sqlParameters[0].Value = byData;
            mstream.Close();

            mstream = new MemoryStream();
            dSkinPictureBox2.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byData = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(byData, 0, byData.Length);
            sqlParameters[1].Value = byData;
            mstream.Close();


取出数据做为pictureBox数据源:

 MemoryStream mStreamBuy = new MemoryStream(sqlReader["buyPicture"] as byte[]);
 MemoryStream mStreamSeal = new MemoryStream(sqlReader["salePicture"] as byte[]);

         dSkinPictureBox1.Image = Image.FromStream(mStreamBuy);
         dSkinPictureBox2.Image = Image.FromStream(mStreamSeal);
 mStreamBuy.Close(); // 关闭流
 mStreamSeal.Close();



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Qt 中读取 SQLite 中的 BLOB 数据并将其写入图像,可以按照以下步骤进行: 1. 打开 SQLite 数据库并准备读取 BLOB 数据。可以使用 `QSqlDatabase` 和 `QSqlQuery` 类来执行此操作。 ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path/to/database"); if (!db.open()) { qDebug() << "database open error"; return; } QSqlQuery query(db); query.prepare("SELECT image FROM table WHERE id = :id"); query.bindValue(":id", 1); if (!query.exec()) { qDebug() << "query execution error"; return; } if (!query.next()) { qDebug() << "no data found"; return; } QByteArray blobData = query.value(0).toByteArray(); ``` 2. 将 BLOB 数据写入临时文件。可以使用 `QTemporaryFile` 类来创建临时文件并将数据写入其中。 ```cpp QTemporaryFile tempFile; if (!tempFile.open()) { qDebug() << "temporary file creation error"; return; } tempFile.write(blobData); tempFile.close(); ``` 3. 从临时文件中读取图像数据并显示。可以使用 `QImage` 类来加载图像数据并将其显示在控件中。 ```cpp QImage image; if (!image.load(tempFile.fileName())) { qDebug() << "image loading error"; return; } ui->label->setPixmap(QPixmap::fromImage(image)); ``` 完整的代码示例: ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("path/to/database"); if (!db.open()) { qDebug() << "database open error"; return; } QSqlQuery query(db); query.prepare("SELECT image FROM table WHERE id = :id"); query.bindValue(":id", 1); if (!query.exec()) { qDebug() << "query execution error"; return; } if (!query.next()) { qDebug() << "no data found"; return; } QByteArray blobData = query.value(0).toByteArray(); QTemporaryFile tempFile; if (!tempFile.open()) { qDebug() << "temporary file creation error"; return; } tempFile.write(blobData); tempFile.close(); QImage image; if (!image.load(tempFile.fileName())) { qDebug() << "image loading error"; return; } ui->label->setPixmap(QPixmap::fromImage(image)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值