- 论坛徽章:
- 0
|
在Qt中如何加载图像以及保存图像到数据库中
先前写过一个在PHP中往数据库中保存图像以及如何读取显示出来:
http://www.qtcn.org/blog/blog.php?do-showone-itemid-479-type-blog.html
现在遇到了在Qt中把图像保存到数据库中(以BLOB类型保存)的问题,这里总结一下,供各位朋友参考
基本的思想和前面的使用PHP保存头像是一样的,这里以例子解说
1、加载一个头像到界面上显示出来(labelZhaoPian的大小是80x96)
显示头像,这里用QLabel来显示,代码如下:
extern QString g_strCurrentDir;
QString strImage = QFileDialog::getOpenFileName(this, "请选择照片文件", g_strCurrentDir, "图像文件 (*.png *.jpg *.bmp *.gif)");
if (strImage.isNull())
{
return;
}
g_strCurrentDir = QDir(strImage).absolutePath();
labelZhaoPian->setPixmap(QPixmap(strImage).scaled(labelZhaoPian->size()));
相应地,清除头像的代码就很简单了
labelZhaoPian->setPixmap(QPixmap());
labelZhaoPian->setText("照\n\n片");
2、保存图像到数据库中,以PNG格式
if (labelZhaoPian->pixmap()->isNull() == false)
{
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
labelZhaoPian->pixmap()->save(&buffer, "PNG");
QString out;
for(int n = 0; n
3、从数据库中读取出图像来,并显示
QSqlQuery q("SELECT photo FROM profile WHERE iprofileid = 1");
if (q.next())
{
if (q.isNull(0) == false)
{
QPixmap photo;
photo.loadFromData(q.value(0).toByteArray(), "PNG");
labelZhaoPian->setPixmap(photo);
}
}
欢迎到
XChinux
的个人主页看更多内容
阅读全文
(2029) |
回复
2 |
推送
guest
于 2007-09-15 00:07XChinux你好
我用的代码片段如下:
QFile* file=new QFile(fileName); //fileName为二进制数据文件名
file->open(QIODevice::ReadOnly);
QSqlQuery query;
query.prepare("INSERT INTO myTestDB (Id, BlobData) "
"VALUES (?, ?)");
QString tmp=nameEdit->text(); //nameEdit是自己定义的QLineEdit输入框名字
QVariant name(tmp);
query.addBindValue(name);
QByteArray Data;
Data=file->readAll();
file->close();
query.addBindValue(Data);
query.exec();
这样把图像保存到数据库里,代码也还算清晰。
不过,现在有一个问题:
我是用的256M内存的赛阳2.4GHz的Windows2000系统下的Access做的测试,
把10M的mp3音频文件保存到数据库用时在22秒左右,内存占用50M;
当我试图将100M的视频文件保存到数据库时,系统无响应!!!
我尝试将100M文件分割成10M的数据块逐块保存,没有发现合适的append()函数
不知道您是否能提供一点在Qt下将100M以上的大文件保存到数据库的建议呢?
谢谢。
guest
于 2007-09-15 09:45这个是与数据库有关系的吧,看数据库的bin类型字段最大存储多少的数据。引自:http://www.qtcn.org/blog/article.php?itemid-627-type-blog.html
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69947/showart_1423505.html |
|