導航:首頁 > 文件處理 > jsbase64壓縮

jsbase64壓縮

發布時間:2022-07-13 07:05:42

⑴ 如何有效提高Base64編碼後的文件的壓縮

#include <iostream>

#include <cmath>

#include <cstring>

#include <cstdlib>

using namespace std;

// 初始化工作 , initialize

// 定義查詢表 , = 是為了原碼不夠分配而加上的。

char sz64Table[65] = {'A','B','C','D','E',
'F','G','H','I','J',
'K','L','M','N','O',
'P','Q','R','S','T',
'U','V','W','X','Y',
'Z','a','b','c','d',
'e','f','g','h','i',
'j','k','l','m','n',
'o','p','q','r','s',
't','u','v','w','x',
'y','z','0','1','2',
'3','4','5','6','7',
'8','9','+','/','='
} ;

// 定義 變換函數。

void Encode64 (string strGetStr) // 轉換
{
// 判斷其長度是否符合要求

int nNumberOfGetStr = 0 ; // 串的長度

int nNeedByte ; // 需要補充的位元組數

int nGroup ; // 分組數

nNumberOfGetStr = strGetStr.length ();

if ( nNumberOfGetStr == 0 )

{
cout << "輸入串為空!"<< endl;

exit ( 1 ) ;

}
else // 長度不為空,要判斷數量是否需要補充
{
nGroup = nNumberOfGetStr / 3 ; // 這里是分組數的初步值

nNeedByte = nNumberOfGetStr % 3 ; // 這里是一個模,用的時候還得注意。

if ( nNeedByte == 1 ) // 模1 說明需要兩個
{
nGroup ++ ;

strGetStr.append ("00") ;

}

if ( nNeedByte == 2 ) // 模2說明需要一個補0
{
nGroup ++ ;

strGetStr.append ("0") ;

}

} // if

// 開始分組 , 也就是對每一組都進行變換。

char szTemp[3] ; // 中間過渡

// char * p = new char( nGroup * 4 ); // 因為轉換後容量是原來的4/3

char p[300] ;

for ( int i = 0 ; i < nGroup ; i ++ )
{

szTemp[0] = strGetStr.at ( i * 3 + 0) ;

szTemp[1] = strGetStr.at ( i * 3 + 1) ;

szTemp[2] = strGetStr.at ( i * 3 + 2) ;

//第一個輸出位元組:取第一輸入位元組的前6位,並且在高位補0,使其變成8位(一個位元組)

p[i * 4 + 0] = szTemp[0] >> 2 ;

//第二個輸出位元組:取第一輸入位元組的後2位和第二個輸入位元組的前4位(共6位),並且在高位補0,使其變成8位(一個位元組)

p[i * 4 + 1] = ((szTemp[0] & 0x03) << 4) ^ (szTemp[1] >> 4) ;

//第三個輸出位元組:取第二輸入位元組的後4位和第三個輸入位元組的前2位(共6位),並且在高位補0,使其變成8位(一個位元組)

if ( szTemp[1] == 48) p[i * 4 + 2] = 64 ; // 48 也就是 0 的ASCII

else p[i * 4 + 2] = ((szTemp[1] & 0x0f) << 2) ^ (szTemp[2] >> 6) ;

//第四個輸出位元組:取第三輸入位元組的後6位,並且在高位補0,使其變成8位(一個位元組)

if ( szTemp[2] == 48) p[i * 4 + 3] = 64 ;

else p[i * 4 + 3] = szTemp[2] & 0x3f ;

}

for (int j = 0 ; j < nGroup * 4 ; j ++)
{
cout << sz64Table[ p[j] ] ;

}

cout << endl;

}// Encode is over ;

昨天看著一個C#代碼改寫的,可能有些語法語義的不正確,大家見諒。水平實在是不行,但我寫了之後發現如果是對一個字元進行編碼的話,會出現問題。
跟其他程序比起來,差了3個位置。比如: 1 編為 :MQ== , 我的編為: MT== 。字元多了就沒問題。自己沒想明白,誰給審審!

⑵ js zip怎麼壓縮base64字元串

public class Trans {

public void printNum(int num){
System.out.print(Thread.currentThread());//獲取當前運行這個方法的類
for(int i=0;i<25;i++){
System.out.print(i+" ");
}
System.out.println();
}
}

⑶ 如何用nodejs壓縮文件,生成tar包

壓縮文件可以通過導流一個 fs.ReadStream 到一個 zlib 流,然後到一個 fs.WriteStream 來完成。
inp.pipe(gzip).pipe(out);
一步壓縮或解壓縮數據可以通過快捷方法來完成。
var buffer = new Buffer('eJzT0yMAAGTvBe8=', 'base64');
zlib.unzip(buffer, function(err, buffer) {
if (!err) {
console.log(buffer.toString());
}
});
要在 HTTP 客戶端或伺服器中使用此模塊解決了。

⑷ 當前使用JS在前端完成圖片壓縮的有哪些方法

這個base64的編碼並不能減小圖片,反而增大了,大概增大了1/3。至於有沒有其他的方法我就不知道了,不過直接構造Blob對象上傳就行了,為什麼要上傳dataurl

⑸ 如何使用 node.js 生成 zip 壓縮包

壓縮或解壓縮一個文件可以通過導流一個 fs.ReadStream 到一個 zlib 流,然後到一個 fs.WriteStream 來完成。

inp.pipe(gzip).pipe(out);

一步壓縮或解壓縮數據可以通過快捷方法來完成。

varbuffer=newBuffer('eJzT0yMAAGTvBe8=','base64');
zlib.unzip(buffer,function(err,buffer){
if(!err){
console.log(buffer.toString());
}
});

要在 HTTP 客戶端或伺服器中使用此模塊,請在請求和響應中使用accept-encoding和content-encoding頭。

⑹ 如何使用JS將音頻文件如何轉換成base64格式的

1)使用cmd命令運行 輸入cmd進入存.swa 文件的文件夾(進入路徑用命令 cd ,例:cd C:\abc) 利用命令 ren *.swa *.mp3,批量轉換(*為批量適配符) 2)用萬能格式轉換工具轉換例:WinMPG Video Convert

⑺ 前端把圖片壓縮轉換成base64編碼把值賜予input='hidden' 之後提交給後台. HTML5,PHP,javascript,canvas

缺點你無法直接驗證傳來的base64數據的完整性,比如大小,文件頭之類的,還需要自己來實現。

⑻ js把頁面圖片打包成zip格式

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<title></title>
<style>
img{
width:200px;
height:150px;
}
</style>
</head>
<body>

<imgsrc="http://pic.pptbz.com/201506/2015070581208537.JPG"/>
<imgsrc="http://img.taopic.com/uploads/allimg/121014/234931-1210140JK414.jpg"/>
<imgsrc="http://img.zcool.cn/community/.jpg"/>
<imgsrc="http://img.zcool.cn/community/.jpg"/>
<br/><br/>
<buttononclick="packageImages()">packageImages</button><spanid="status"></span><br/><br/>

<scripttype="text/javascript"src="js/jquery.min.js"></script>
<scripttype="text/javascript"src="js/jszip.min.js"></script>
<scripttype="text/javascript"src="js/FileSaver.js"></script>
<scripttype="text/javascript">
functionpackageImages(){
$('#status').text('處理中。。。。。');

varimgs=$('img');

varimgsSrc=[];
varimgBase64=[];
varimageSuffix=[];//圖片後綴
varzip=newJSZip();
zip.file("readme.txt","案件詳情資料 ");
varimg=zip.folder("images");

for(vari=0;i<imgs.length;i++){
varsrc=imgs[i].getAttribute("src");
varsuffix=src.substring(src.lastIndexOf("."));
imageSuffix.push(suffix);

getBase64(imgs[i].getAttribute("src"))
.then(function(base64){
imgBase64.push(base64.substring(22));

//console.log(base64);//處理成功列印在控制台
},function(err){
console.log(err);//列印異常信息
});

}
functiontt(){
setTimeout(function(){
if(imgs.length==imgBase64.length){
for(vari=0;i<imgs.length;i++){
img.file(i+imageSuffix[i],imgBase64[i],{base64:true});
}
zip.generateAsync({type:"blob"}).then(function(content){
//seeFileSaver.js
saveAs(content,"images.zip");
});
$('#status').text('處理完成。。。。。');

}else{
//console.log('imgs.length:'+imgs.length+',imgBase64.length:'+imgBase64.length);
$('#status').text('已完成:'+imgBase64.length+'/'+imgs.length);
tt();
}
},100);

}
tt();

}

//傳入圖片路徑,返回base64
functiongetBase64(img){
functiongetBase64Image(img,width,height){//width、height調用時傳入具體像素值,控制大小,不傳則默認圖像大小
varcanvas=document.createElement("canvas");
canvas.width=width?width:img.width;
canvas.height=height?height:img.height;

varctx=canvas.getContext("2d");
ctx.drawImage(img,0,0,canvas.width,canvas.height);
vardataURL=canvas.toDataURL();
returndataURL;
}
varimage=newImage();
image.crossOrigin='Anonymous';
image.src=img;
vardeferred=$.Deferred();
if(img){
image.onload=function(){
deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理
}
returndeferred.promise();//問題要讓onload完成後再returnsessionStorage['imgTest']
}
}

</script>
</body>
</html>

閱讀全文

與jsbase64壓縮相關的資料

熱點內容
php開發客戶端 瀏覽:996
theisle測試服怎麼搜伺服器 瀏覽:445
廣播PDF 瀏覽:216
單片機編程300例匯編百度 瀏覽:33
騰訊雲連接不上伺服器 瀏覽:221
不能用來表示演算法的是 瀏覽:859
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923