一、前言

对于图片的传输,通俗的做法一般有两种,一种是直接二进制文件传输,比如先传输开始标记,带文件名称、文件字节长度,然后挨个分包发送、最后发送文件结束标记,这种方式必须要求接收方按照自己定义的规则来接收数据生成文件,所以通用性有限,要么用http的形式请求上传文件,按照标准的文件上传机制进行处理,但是这样又限定了应用场景,比如很多时候又是需要直接底层的TCP或者UDP协议进行传输,或者直接传完就显示。

这就衍生了第二种常规做法,转换成base64编码进行传输,现有的各种语言平台开发框架,基本上都会有base64编码转换的函数或者类,毫无疑问Qt也有的,作为超大型GUI开发超市,这肯定是必须的必备的基础函数,转换到base64编码唯一缺点就是数据量增大不少。

还有一种常用的场景会用到base64编码是中文的传输,比如用tcp协议,如果双方都是utf8编码都好说,关键是很多可能是gbk编码的,你发过去未必认识,常见的串口收发中文、网络数据收发中文,都是个头疼的问题,要兼容起来最好的办法就是直接将中文转成base64编码,对方接收到以后进行base64解码,轻轻松松就搞定,我做过的公司相关的项目,还有很多第三方平台的通信,或者提供给第三方的接口规范,中文这块都按照base64编码来约定,从未出过问题。

base64编码介绍:

  1. Base64是网络上最常见的用于传输8Bit字节码的编码方式之一。
  2. Base64就是一种基于64个可打印字符来表示二进制数据的方法。
  3. Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。
  4. 采用Base64编码具有不可读性,需要解码后才能阅读。
  5. Base64编码可用于在HTTP环境下传递较长的标识信息。

二、主要功能

  1. 图片转base64字符串。
  2. base64字符串转图片。
  3. 字符转base64字符串。
  4. base64字符串转字符。
  5. 后期增加数据压缩。
  6. Qt6对base64编码转换进行了重写效率提升至少200%。

三、效果图

四、开源主页

  • 以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
  • 本开源项目已经成功升级到V2.0版本,分门别类,图文并茂,保你爽到爆。
  • Qt开源武林秘籍开发经验,看完学完,20K起薪,没有找我!
  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 开源秘籍:https://gitee.com/feiyangqingyun/qtkaifajingyan
  4. 个人主页:https://qtchina.blog.csdn.net/
  5. 知乎主页: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编码互换相关推荐

  1. python将图片转换成二进制文本_python将图片文件转换成base64编码的方法

    本文实例讲述了python将图片文件转换成base64编码的方法.分享给大家供大家参考.具体实现方法如下: import base64f=open(r'c:\jb51.gif','rb') #二进制方 ...

  2. Python 图片数据MYSQL存取(BASE64编码解码)

    Python 图片数据MYSQL存取(BASE64编码解码) 1.相关python代码 #-*- coding:utf-8 -*-import pymysql import sys import ba ...

  3. Qt开源作品33-图片开关控件

    一.前言 进入智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ.360卫士.金山毒霸等,都有很多开关控制一些操作,在WINFORM项目上,如 ...

  4. Qt开源作品35-秘钥生成器

    一.前言 在很多商业软件中,需要提供一些可以试运行的版本,这样就需要配套密钥机制来控制,纵观大部分的试用版软件,基本上采用以下几种机制来控制. 远程联网激活,每次启动都联网查看使用时间等,这种方法最完 ...

  5. Qt开源作品27-鼠标定位十字线

    一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...

  6. Qt qpushbutton上添加图片和文字

    在button上添加图片和文字,通过background-image.border-image.setIcon.pixmap等方式添加图片,都无法做到图片在上,文字在下. 步骤一:在pushbutto ...

  7. Qt开源作品23-颜色拾取器

    一.前言 在做很多项目的UI界面的时候,相信绝大部分人都有过抄袭别人的UI界面尤其是颜色的时候,毕竟十个程序员九个没有审美,或者说审美跟一坨屎一样,大家主要的精力以及擅长点都是在写功能实现具体功能上面 ...

  8. Qt开源作品37-网络中转服务器

    一.前言 用Qt做开发10年了,其中做过好多项目,基于现在web和移动互联网发展如此迅猛,大量的应用场景需要一个网络中转服务器,可以实现手机app或者其他客户端远程回控设备,现在物联网发展非常迅猛,这 ...

  9. Python 技术篇-用base64库对音频、图片等文件进行base64编码和解码实例演示

    最近在研究项目,需要调用百度语音的api,传入参数需要本地语音文件 base64 位编码后内容.下面来演示一下. 其实很简单,base64 是系统自带的库. base64.b64encode() 进行 ...

  10. 一种简便的ios图片加密方法-对图片进行base64编码

    最近项目中需要对图片的安全做处理,保证用户(即使是越狱用户)也不能查看到从服务器中下载下来的图片. 折腾了多种方法,发现还是使用base64对储存的文件进行一次编码最方便,编码之后,用户打开图片时将显 ...

最新文章

  1. 从零开始单排学设计模式「UML类图」定级赛
  2. HashSet的使用
  3. iOS旋钮动画-CircleKnob
  4. codeforces732D Exams(二分)
  5. vs2008安装部署软件过程
  6. svn在linux下的使用(转)
  7. 云计算底层技术-虚拟网络设备(Bridge,VLAN)
  8. 生成html_用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告
  9. python线程数组_Python多线程
  10. vue 日历 vue-calendar
  11. 变频器22b系列说明书_变频器接电位器正确接法
  12. 强行进入远程计算机,远程桌面强制连接命令
  13. python合并两个txt、并且逐条合并_用python实现两个文本合并
  14. T检验、卡方检验以及p-value
  15. 我奋斗了18年还是不能和你坐在一起喝咖啡(转)
  16. 解决创建文本文件,修改后缀为.py,仍改不了文本类型的问题
  17. 谷歌语法和FOFA常用语法总结
  18. android locat
  19. 弘玑Cyclone完成1.5亿美元C轮融资,创行业单笔融资额最大记录
  20. linux 查看系统配置

热门文章

  1. eclipse安装中文版插件
  2. 基于springboot社区疫情防控管理系统
  3. 数字图像处理第三版(冈萨雷斯)笔记,2020
  4. 直播电商源码,无加密
  5. Qt网络编程-简易版TcpClient入门Demo(1)
  6. python编程师app_新技能:用 Python 写一个安卓 APP
  7. plsql破解的办法
  8. BubbleSort
  9. acunetix12及Awvs12.x安装
  10. 关于 K8S 探针(startupProbe、livenessProbe、readinessProbe)的最佳实践