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