1. 程式人生 > >c++ 實現圖片轉base64

c++ 實現圖片轉base64

原理:

原因:

網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ASCII碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進位制流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情 況下,做一種擴充套件方案來支援二進位制檔案的傳送。把不可列印的字元也能用可列印字元來表示,問題就解決了。Base64編碼應運而生,Base64就是一種 基於64個可列印字元來表示二進位制資料的表示方法。

2.base64編碼原理

 Base64編碼的思想是是採用64個基本的ASCII碼字元對資料進行重新編碼。它將需要編碼的資料拆分成位元組陣列。以3個位元組為一組。按順序排列24 位資料,再把這24位資料分成4組,即每組6位。再在每組的的最高位前補兩個0湊足一個位元組。這樣就把一個3位元組為一組的資料重新編碼成了4個位元組。當所要編碼的資料的位元組數不是3的整倍數,也就是說在分組時最後一組不夠3個位元組。這時在最後一組填充1到2個0位元組。

CString err;
    CFile ImageFile;

CFileException e;

//讀取照片資料

{

//  ImageFile.Open(pInput,CFile::modeRead, &e);
if(!ImageFile.Open(pInput, CFile::modeRead,&e))
{
err.Format("ERROR:%s", pInput);
return err.AllocSysString();
}


    int iSrcLen = ImageFile.GetLength();
 
    unsigned char *szImageBin;
    szImageBin = new unsigned char[iSrcLen];
    ImageFile.Read((void*)szImageBin,iSrcLen);
 


    char *base64code;
    int nRemain = iSrcLen % 3;
    int nLeast= 0;
 
    if(nRemain != 0)
    {
        nLeast=1;
    }
    base64code = new char[(iSrcLen/3+nLeast)*4 + 1];    
 
CBase64 b64;
int dlen = b64.base64_encode2(szImageBin, iSrcLen, base64code);

base64code[dlen] = 0;

}

//轉碼

int CBase64::base64_encode2(const unsigned char *in, unsigned int inlen, char *out)
{
unsigned int i, j;


for (i = j = 0; i < inlen; i++) {
int s = i % 3; /* from 6/gcd(6, 8) */


switch (s) {
case 0:
out[j++] = base64en[(in[i] >> 2) & 0x3F];
continue;
case 1:
out[j++] = base64en[((in[i - 1] & 0x3) << 4) + ((in[i] >> 4) & 0xF)];
continue;
case 2:
out[j++] = base64en[((in[i - 1] & 0xF) << 2) + ((in[i] >> 6) & 0x3)];
out[j++] = base64en[in[i] & 0x3F];
}
}


/* move back */
i -= 1;
/* check the last and add padding */
if ((i % 3) == 0) {
out[j++] = base64en[(in[i] & 0x3) << 4];
out[j++] = BASE64_PAD;    BASE64_PAD   =


out[j++] = BASE64_PAD;
}
else if ((i % 3) == 1) {
out[j++] = base64en[(in[i] & 0xF) << 2];
out[j++] = BASE64_PAD;
}


return j;
}


相關推薦

c++ 實現圖片base64

原理:原因:網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ASCII碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進位制流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情 況下,做一種擴充套

C# imgage圖片base64字元/base64字串圖片另存成

//圖片轉為base64編碼的字串 protected string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = new Bitmap(Imagefilename);

前端實現圖片base64

使用canvas 新建個canvas標籤然後用css隱藏。之後獲取此canvas元素,使用toDataURL方法轉換。 12 var canvas=document.getElementById("xxxx");var base64=canvas.toDataU

C++實現圖片base64編碼

1.base64編碼的原因 網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ASCII碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖片二進位制流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情

C++ 實現圖片base64編解碼

最近使用人臉識別restfulAPI遇到了要求圖片base64編碼後傳輸問題。 藉此機會瞭解下什麼是base64編碼。 1 什麼是base64編碼 所謂Base64,就是說選出64個字元—-小寫字母a-z、大寫字母A-Z、數字0-9、符號”+”、”

js實現圖片base64編碼

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAADJCAYAAABi8a0GAAAfIElEQVR4Xu19e5gU1Zn++1UPw4CgGEUFugZQFHG6Ggwm0WiyahLjbXcTjSRRk2gSN2KMRgW6Gt11dgW6GoxE

C#圖片base64

ati memory color name span lose efi 完整路徑 路徑 話不多說,直接上代碼: 其中Imagefilename是文件完整路徑 public string ToBase64() { try

Linux下c實現域名IP的方法封裝

rrd dbv mvm com inf adk lan fad bho 蝕古戮一爸下戀墩諂棧鐘啥材諭http://jz.docin.com/kjr58937 囪弛探刻煌俺厴嘲蹤以洶趴敵柿http://www.docin.com/app/user/userinfo?useri

c#實現圖片二值化例子(黑白效果)

rec con devel 圖片 round amp bsp 操作 spl C#將圖片2值化示例代碼,原圖及二值化後的圖片如下: 原圖: 二值化後的圖像: 實現代碼:using System; using System.Drawing; namespace BMP2G

python學習---50行代碼實現圖片字符畫1

灰度值 調用 pix parser from $@ bsp csdn 列表 轉自:https://blog.csdn.net/mm1030533738/article/details/78447714 項目鏈接: https://www.shiyanlou.com/cour

Icon是什麽,在線實現圖片Icon的方法

window text 制作 軟件圖標 ffffff 分享 watermark alt 在線轉換 Icon是什麽呢?Icon是一種圖標格式,用於系統圖標、軟件圖標等。一些常見的軟件和Windows桌面上的那些圖標一般都是Icon格式的。那麽如果我們想要將制作好的圖片轉Ico

Python3實現圖片字元畫

一、圖片轉字元畫     二、原始碼 # -*- coding: utf-8 -*- from PIL import Image, ImageTk import argparse #命令列輸入引數處理 parser = argparse.ArgumentParse

實現圖片base64的轉化

可以修改圖片格式,並儲存到本地資料夾中。 //讀取待處理的圖片 String imgFile = "C:\\image1.png"; InputStream in = new FileInputStream(imgFile); byte[] dat

Android實現圖片ascii碼字元圖的一些嘗試

z2IN.png 抖音上炫程式碼的不少,有些真的讓人歎為觀止,作為一個androider,當我看到下面這段舞蹈的時候,終於忍不住了,想要通過android實現一樣的效果。 jilejingtu.gif 這麼好玩的東西,為啥就沒有大佬做呢,原因可能有兩個,

PDF技術(三)-Java實現圖片PDF檔案

圖片轉pdf檔案同樣採用itext,將圖片加入即可 1)使用IText轉換 原理: 使用IText建立pdf,新增圖片。 優點: 速度快。 具體實現 public class Image2PDF { /*** @param picturePath 圖片地址*/

iOS 圖片base64編碼

今天有人在群裡問,圖片怎麼轉成base64編碼?那我就在這裡說一說 其實圖片轉成base64編碼,很簡單,蘋果提供了方法 //圖片轉base64 UIImage *image = [UIImage imageNamed:@"eg"]; NSData *data = UII

js圖片base64

var reader = new FileReader() reader.readAsDataURL(file) reader.onload = function() { url= reader.result } onl

C#實現圖片疊加,圖片上嵌入文字,文字生成圖片的方法

idt obi 字體 保存 poi width watermark graph col /// <summary> /// 圖片疊加 /// </summary> /// <param name="sender">

js圖片base64編碼壓縮上傳

/** * 回撥函式 * @param image_base64 */ var callback = function(image

base64圖片 圖片base64

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/x