Qt生成缩略图片存入sqlite

Qt生成缩略图片存入sqlite

新建一个工程pro文件中加入 QT += sql 添加sql支持。

>folded
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// main.cpp

#include <QApplication>
#include <QtGui>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

//添加数据库,不表
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "conn1");
db.setDatabaseName("/home/htux/thumbs.sqlite");
if(!db.open()) return 1;

QByteArray baImage;

QString filename = "/home/htux/file2.jpg";
QPixmap pixmapIn(filename);

QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);

QPixmap pixmapSmall;
//让生成的缩略图高宽都不超过256.
pixmapSmall = pixmapIn.scaled(256,256,
Qt::KeepAspectRatio, Qt::SmoothTransformation);
//保存生成的缩略图到ByteArray, 格式为JPG, 图片质量50.
//图片质量的取值Qt文档中没查到,不过按照国际惯例应该是0-100
//保存几个不同质量的图片看看差别
pixmapSmall.save(&buffer, "JPG",50);
pixmapSmall.save("/home/htux/file2.png", "PNG");
pixmapSmall.save("/home/htux/file2-5.jpg", "JPG", 20);
pixmapSmall.save("/home/htux/file2-5.jpg", "JPG", 50);
pixmapSmall.save("/home/htux/file2-8.jpg", "JPG", 80);

QSqlQuery query(db);

query.exec("CREATE TABLE thumbs "
"(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
" filename VCHAR(20) , thumbnail BLOB);");

QString sql = QString("INSERT INTO thumbs VALUES "
"( NULL , :filename, :thumbnail );");

query.prepare(sql);
query.bindValue(":filename", filename);
query.bindValue(":thumbnail", baImage);

query.exec();

query.exec("select * from thumbs;");

//跳到最后存入的记录
if (!query.last()) return 1;

QPixmap pixmapOut;
//读出存入的图片
pixmapOut.loadFromData(query.value(2).toByteArray());

db.close();
//把图片用Label显示出来.
QLabel label;
label.setPixmap(pixmapOut);
label.show();

return a.exec();
}

Qt生成缩略图片存入sqlite

http://tux.red/2022/08/11/Qt/qt-sqlite-image/

作者

redtux

发布于

2022-08-11

更新于

2022-08-11

许可协议

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

评论

You forgot to set the shortname for Disqus. Please set it in _config.yml.