pyqt二进制和图片的转换
参考:http://blog.chinaunix.net/uid-28194872-id-3516936.html
MySQL数据库要想插入图片,其字段需要是BLOB类型。
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。
在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。
BLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
选择图片文件:
QString strImage = QFileDialog::getOpenFileName(
this,
"Please Select image file",
g_strCurrentDir,
"Image Format (*.png *.jpg *.bmp *.gif)");
if (strImage.isNull())
{
return;
}
g_strCurrentDir = QDir(strImage).absolutePath();
ui->labelPic->setPixmap(QPixmap(strImage).scaled(ui->labelPic->size()));
//保存图片到数据库中:
QByteArray bytes;
QBuffer buffer(&bytes);
buffer.open(QIODevice::WriteOnly);
ui->labelPic->pixmap()->save(&buffer, "JPG");
QByteArray data;
QSqlQuery query;
QString path = strImage;
QFile* file=new QFile(path); //fileName为二进制数据文件名
file->open(QIODevice::ReadOnly);
data = file->readAll();
file->close();
Variant var(data);
QString sql = "insert into images(Image) values(?)";
query.prepare(sql);
query.addBindValue(var);
if(!query.exec())
{
qDebug()<<query.lastError().text().toLocal8Bit().data();
}
else
{
qDebug()<<"Insert success";
}
}
//显示数据库里的图片
QSqlQuery q("SELECT * FROM images WHERE PicNum = 108");
while (q.next())
{
if (q.isNull(0) == false)
{
QPixmap photo;
ui->num->setText(q.value(0).toString());
photo.loadFromData(q.value(1).toByteArray(), "JPG");
ui->UserPicLabel->setPixmap(photo);
qDebug()<<"Query success";
}
else
{
qDebug()<<"Query failed";
}
}
//连接数据库
#ifndef CONNECTION_H
#define CONNECTION_H
#include
#include
#include
#include
#include
#include
static bool createConnection()
{
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("test");
db.setHostName("172.17.54.133");
db.setPort(3306);
db.setUserName("root");
db.setPassword("213517");
if(!db.open())
{
QMessageBox::critical(0,qApp->tr("Cannot connect server"),qApp->tr("Unable to establish a database connection.\n"),QMessageBox::Cancel);
return false;
qDebug()<<"Connect MySql error!";
}
return true;
}
#endif // CONNECTION_H
注意:图片插入数据库和显示时其格式必须是和图片本身的格式对应的,不然不能显示。
ex: photo.loadFromData(q.value(1).toByteArray(), "JPG");
源码下载:
SQLPicTest.rar
数据库下载:
test.rar
pyqt二进制和图片的转换的更多相关文章
- c#中文件与二进制流文件的转换
将文件转换成二进制方法: /// <summary> /// 将文件转换成二进制 /// </summary> /// <param name=&quo ...
- php 图片格式转换-亲测ok
代码如下 /** * 图片格式转换 * @param string $image_path 文件路径或url * @param string $to_ext 待转格式,支持png,gif,jpeg,w ...
- 【VC++技术杂谈007】使用GDI+进行图片格式转换
本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使 ...
- oracle 报“无效数字”异常和“ORA-01830: 日期格式图片在转换整个输入字符串之前结束”
1.问题1 执行下列SQL: sql = "select count(1) as totle from vhl_model_data a where a.OBTAIN_CREATE_TIME ...
- python 将png图片格式转换生成gif动画
先看知乎上面的一个连接 用Python写过哪些[脑洞大开]的小工具? https://www.zhihu.com/question/33646570/answer/157806339 这个哥们通过爬气 ...
- js 将图片文件转换成base64
1.情景展示 在JavaScript中,如何使用图片文件转换成base64? 2.解决方案 /** * 网络图像文件转Base64 * @param img dom对象 */ function g ...
- Base64图片编码原理,base64图片工具介绍,图片在线转换Base64
Base64图片编码原理,base64图片工具介绍,图片在线转换Base64 DataURI 允许在HTML文档中嵌入小文件,可以使用 img 标签或 CSS 嵌入转换后的 Base64 编码,减少 ...
- js如何将选中图片文件转换成Base64字符串?
如何将input type="file"选中的文件转换成Base64的字符串呢? 1.首先了解一下为什么要把图片文件转换成Base64的字符串 在常规的web开发过程中,大部分上传 ...
- bmp,jpg,png,tif,wmf,emf与eps图片格式转换
wmf/emf是两种Microsoft Windows的图形文件格式.它是一个矢量图格式,但是也允许包含位图.本质上,一个WMF文件保存一系列可以用来重建图片的Windows GDI命令.在某种程度上 ...
随机推荐
- cv1.0入门
作者 群号 C语言交流中心 环境 VS2010UltimTrial1.iso http://pan.baidu.com/s/1dEL85kl VS2010Ulti ...
- 全库搜索某个内容的sql
DECLARE @what varchar(800) SET @what='联系' --要搜索的字符串 DECLARE @sql varchar(8000) DECLARE TableCursor C ...
- 每日英语:China Poses Challenge for Coal
China's appetite for coal, once seemingly unlimited, is starting to wane, and the effects are rippli ...
- 【Maven】Maven的安装与入门使用
它也是实现项目各个环节的好帮手,如编译.单元测试.打包.发布,等等.按照它的流程走,可以让我们养成严谨的习惯. 同时,我们用得很多的是用它下载JAR,想想以前,以前框架的包都是自己一个一个爬官网下载的 ...
- How do I create a List in Scala?
Scala List class FAQ: How do I create a List in Scala? You can create a Scala List in several differ ...
- jQuery的使用说明
jQuery是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优 秀的js效果,jQuery可以帮你达到目的! ...
- 《CCNA(640-802)全套课程讲义》笔记
路由器: CLI(命令行界面)形式相对应的是GUI (图形用户界面) DTE:数据终端设备,指的是位于用户网络接口的用户端设备,通常情况下,路由器端为DTE端. DCE:数据通讯设备,为通信提供时钟 ...
- Android开发日记(四)
在服务器端数据库新建一个表ad 在DataInfo.edxm模型中点击从数据库更新模型,发布. 就新建了一个实体ad 然后新建cs文件 using System; using System.Colle ...
- 新闻门户网站图集相册JS代码
新闻网站jQuery图集相册代码,支持键盘方向键切换,支持点击图片左右区域切换,支持自动轮播,带缩略图.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class= ...
- 一款纯css3实现的动画加载导航
之前为大家介绍了好几款导航菜单,今天为给大家再带来一款纯css3实现的动画加载导航.该导航出现的时候以动画的形式出现.效果图如下: 在线预览 源码下载 实现的代码. html代码: <ul ...