Qt开源作品40-图片及文字与base64编码互换
生活随笔
收集整理的這篇文章主要介紹了
Qt开源作品40-图片及文字与base64编码互换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、前言
對于圖片的傳輸,通俗的做法一般有兩種,一種是直接二進制文件傳輸,比如先傳輸開始標記,帶文件名稱、文件字節長度,然后挨個分包發送、最后發送文件結束標記,這種方式必須要求接收方按照自己定義的規則來接收數據生成文件,所以通用性有限,要么用http的形式請求上傳文件,按照標準的文件上傳機制進行處理,但是這樣又限定了應用場景,比如很多時候又是需要直接底層的TCP或者UDP協議進行傳輸,或者直接傳完就顯示。
這就衍生了第二種常規做法,轉換成base64編碼進行傳輸,現有的各種語言平臺開發框架,基本上都會有base64編碼轉換的函數或者類,毫無疑問Qt也有的,作為超大型GUI開發超市,這肯定是必須的必備的基礎函數,轉換到base64編碼唯一缺點就是數據量增大不少。
還有一種常用的場景會用到base64編碼是中文的傳輸,比如用tcp協議,如果雙方都是utf8編碼都好說,關鍵是很多可能是gbk編碼的,你發過去未必認識,常見的串口收發中文、網絡數據收發中文,都是個頭疼的問題,要兼容起來最好的辦法就是直接將中文轉成base64編碼,對方接收到以后進行base64解碼,輕輕松松就搞定,我做過的公司相關的項目,還有很多第三方平臺的通信,或者提供給第三方的接口規范,中文這塊都按照base64編碼來約定,從未出過問題。
base64編碼介紹:
二、主要功能
三、效果圖
四、開源主頁
- 以上作品完整源碼下載都在開源主頁,會持續不斷更新作品數量和質量,歡迎各位關注。
- 本開源項目已經成功升級到V2.0版本,分門別類,圖文并茂,保你爽到爆。
- Qt開源武林秘籍開發經驗,看完學完,20K起薪,沒有找我!
五、核心代碼
#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编码互换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微PE工具箱四合一下载并安装
- 下一篇: bzoj2060[USACO2010,N