Qt开源作品40-图片及文字与base64编码互换
一、前言
对于图片的传输,通俗的做法一般有两种,一种是直接二进制文件传输,比如先传输开始标记,带文件名称、文件字节长度,然后挨个分包发送、最后发送文件结束标记,这种方式必须要求接收方按照自己定义的规则来接收数据生成文件,所以通用性有限,要么用http的形式请求上传文件,按照标准的文件上传机制进行处理,但是这样又限定了应用场景,比如很多时候又是需要直接底层的TCP或者UDP协议进行传输,或者直接传完就显示。
这就衍生了第二种常规做法,转换成base64编码进行传输,现有的各种语言平台开发框架,基本上都会有base64编码转换的函数或者类,毫无疑问Qt也有的,作为超大型GUI开发超市,这肯定是必须的必备的基础函数,转换到base64编码唯一缺点就是数据量增大不少。
还有一种常用的场景会用到base64编码是中文的传输,比如用tcp协议,如果双方都是utf8编码都好说,关键是很多可能是gbk编码的,你发过去未必认识,常见的串口收发中文、网络数据收发中文,都是个头疼的问题,要兼容起来最好的办法就是直接将中文转成base64编码,对方接收到以后进行base64解码,轻轻松松就搞定,我做过的公司相关的项目,还有很多第三方平台的通信,或者提供给第三方的接口规范,中文这块都按照base64编码来约定,从未出过问题。
base64编码介绍:
- Base64是网络上最常见的用于传输8Bit字节码的编码方式之一。
- Base64就是一种基于64个可打印字符来表示二进制数据的方法。
- Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。
- 采用Base64编码具有不可读性,需要解码后才能阅读。
- Base64编码可用于在HTTP环境下传递较长的标识信息。
二、主要功能
- 图片转base64字符串。
- base64字符串转图片。
- 字符转base64字符串。
- base64字符串转字符。
- 后期增加数据压缩。
- Qt6对base64编码转换进行了重写效率提升至少200%。
三、效果图
四、开源主页
- 以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
- 本开源项目已经成功升级到V2.0版本,分门别类,图文并茂,保你爽到爆。
- Qt开源武林秘籍开发经验,看完学完,20K起薪,没有找我!
- 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
- 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
- 开源秘籍:https://gitee.com/feiyangqingyun/qtkaifajingyan
- 个人主页:https://qtchina.blog.csdn.net/
- 知乎主页:https://www.zhihu.com/people/feiyangqingyun/
五、核心代码
#include "base64helper.h"
#include "qbuffer.h"
#include "qdebug.h"QString Base64Helper::imageToBase64(const QImage &image)
{return QString(imageToBase64x(image));
}QByteArray Base64Helper::imageToBase64x(const QImage &image)
{//这个转换可能比较耗时建议在线程中执行QByteArray data;QBuffer buffer(&data);image.save(&buffer, "JPG");data = data.toBase64();return data;
}QImage Base64Helper::base64ToImage(const QString &data)
{return base64ToImagex(data.toUtf8());
}QImage Base64Helper::base64ToImagex(const QByteArray &data)
{//这个转换可能比较耗时建议在线程中执行QImage image;image.loadFromData(QByteArray::fromBase64(data));return image;
}QString Base64Helper::textToBase64(const QString &text)
{return QString(text.toLocal8Bit().toBase64());
}QString Base64Helper::base64ToText(const QString &text)
{return QString(QByteArray::fromBase64(text.toLocal8Bit()));
}
Qt开源作品40-图片及文字与base64编码互换相关推荐
- python将图片转换成二进制文本_python将图片文件转换成base64编码的方法
本文实例讲述了python将图片文件转换成base64编码的方法.分享给大家供大家参考.具体实现方法如下: import base64f=open(r'c:\jb51.gif','rb') #二进制方 ...
- Python 图片数据MYSQL存取(BASE64编码解码)
Python 图片数据MYSQL存取(BASE64编码解码) 1.相关python代码 #-*- coding:utf-8 -*-import pymysql import sys import ba ...
- Qt开源作品33-图片开关控件
一.前言 进入智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ.360卫士.金山毒霸等,都有很多开关控制一些操作,在WINFORM项目上,如 ...
- Qt开源作品35-秘钥生成器
一.前言 在很多商业软件中,需要提供一些可以试运行的版本,这样就需要配套密钥机制来控制,纵观大部分的试用版软件,基本上采用以下几种机制来控制. 远程联网激活,每次启动都联网查看使用时间等,这种方法最完 ...
- Qt开源作品27-鼠标定位十字线
一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...
- Qt qpushbutton上添加图片和文字
在button上添加图片和文字,通过background-image.border-image.setIcon.pixmap等方式添加图片,都无法做到图片在上,文字在下. 步骤一:在pushbutto ...
- Qt开源作品23-颜色拾取器
一.前言 在做很多项目的UI界面的时候,相信绝大部分人都有过抄袭别人的UI界面尤其是颜色的时候,毕竟十个程序员九个没有审美,或者说审美跟一坨屎一样,大家主要的精力以及擅长点都是在写功能实现具体功能上面 ...
- Qt开源作品37-网络中转服务器
一.前言 用Qt做开发10年了,其中做过好多项目,基于现在web和移动互联网发展如此迅猛,大量的应用场景需要一个网络中转服务器,可以实现手机app或者其他客户端远程回控设备,现在物联网发展非常迅猛,这 ...
- Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示
最近在研究项目,需要调用百度语音的api,传入参数需要本地语音文件 base64 位编码后内容.下面来演示一下. 其实很简单,base64 是系统自带的库. base64.b64encode() 进行 ...
- 一种简便的ios图片加密方法-对图片进行base64编码
最近项目中需要对图片的安全做处理,保证用户(即使是越狱用户)也不能查看到从服务器中下载下来的图片. 折腾了多种方法,发现还是使用base64对储存的文件进行一次编码最方便,编码之后,用户打开图片时将显 ...
最新文章
- 从零开始单排学设计模式「UML类图」定级赛
- HashSet的使用
- iOS旋钮动画-CircleKnob
- codeforces732D Exams(二分)
- vs2008安装部署软件过程
- svn在linux下的使用(转)
- 云计算底层技术-虚拟网络设备(Bridge,VLAN)
- 生成html_用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告
- python线程数组_Python多线程
- vue 日历 vue-calendar
- 变频器22b系列说明书_变频器接电位器正确接法
- 强行进入远程计算机,远程桌面强制连接命令
- python合并两个txt、并且逐条合并_用python实现两个文本合并
- T检验、卡方检验以及p-value
- 我奋斗了18年还是不能和你坐在一起喝咖啡(转)
- 解决创建文本文件,修改后缀为.py,仍改不了文本类型的问题
- 谷歌语法和FOFA常用语法总结
- android locat
- 弘玑Cyclone完成1.5亿美元C轮融资,创行业单笔融资额最大记录
- linux 查看系统配置