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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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编码互换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。