日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt开源作品40-图片及文字与base64编码互换

發(fā)布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt开源作品40-图片及文字与base64编码互换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

對于圖片的傳輸,通俗的做法一般有兩種,一種是直接二進(jìn)制文件傳輸,比如先傳輸開始標(biāo)記,帶文件名稱、文件字節(jié)長度,然后挨個分包發(fā)送、最后發(fā)送文件結(jié)束標(biāo)記,這種方式必須要求接收方按照自己定義的規(guī)則來接收數(shù)據(jù)生成文件,所以通用性有限,要么用http的形式請求上傳文件,按照標(biāo)準(zhǔn)的文件上傳機(jī)制進(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編碼唯一缺點(diǎn)就是數(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)的項(xiàng)目,還有很多第三方平臺的通信,或者提供給第三方的接口規(guī)范,中文這塊都按照base64編碼來約定,從未出過問題。

base64編碼介紹:

  • Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一。
  • Base64就是一種基于64個可打印字符來表示二進(jìn)制數(shù)據(jù)的方法。
  • Base64編碼是從二進(jìn)制到字符的過程,可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。
  • 采用Base64編碼具有不可讀性,需要解碼后才能閱讀。
  • Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。
  • 二、主要功能

  • 圖片轉(zhuǎn)base64字符串。
  • base64字符串轉(zhuǎn)圖片。
  • 字符轉(zhuǎn)base64字符串。
  • base64字符串轉(zhuǎn)字符。
  • 后期增加數(shù)據(jù)壓縮。
  • Qt6對base64編碼轉(zhuǎn)換進(jìn)行了重寫效率提升至少200%。
  • 三、效果圖

    四、開源主頁

    • 以上作品完整源碼下載都在開源主頁,會持續(xù)不斷更新作品數(shù)量和質(zhì)量,歡迎各位關(guān)注。
    • 本開源項(xiàng)目已經(jīng)成功升級到V2.0版本,分門別類,圖文并茂,保你爽到爆。
    • Qt開源武林秘籍開發(fā)經(jīng)驗(yàn),看完學(xué)完,20K起薪,沒有找我!
  • 國內(nèi)站點(diǎn):https://gitee.com/feiyangqingyun/QWidgetDemo
  • 國際站點(diǎn):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) {//這個轉(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。