导航:首页 > 文件处理 > base64压缩

base64压缩

发布时间:2022-01-26 01:17:57

java怎样压缩base64编码的字符串

是生成了base64字符串,要压缩 ? 那可以使用zip输出流去压缩

~~~~~

❷ 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();
}
}

❸ 把纯文本字符串用Gzip压缩再转换为Base64能有多少压缩率

其实具体多大压缩率要看源文件的内容,一般来说重复的单词越多,压缩率越高。

下面是把/usr/share/dict/words压缩的测试程序

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;

import org.apache.commons.codec.binary.Base64;

public class GzipBase64Tests {

public static void main(String[] args) throws Exception {
File input = new File("/Users/matianyi/input.txt");
File output = new File("/Users/matianyi/output.txt");

if (!input.exists()) {
System.out.println("input file not exists!");
return;
}

if (output.exists()) {
output.delete();
}

ByteArrayOutputStream buffer = new ByteArrayOutputStream();
GZIPOutputStream gout = new GZIPOutputStream(buffer);

FileInputStream in = new FileInputStream(input);

long t1 = System.currentTimeMillis();
byte[] buf = new byte[1024];
int total=0;
int rd;
while ((rd = in.read(buf)) != -1) {
total += rd;
gout.write(buf,0, rd);
}

gout.close();
in.close();

byte[] result = buffer.toByteArray();

long t2 = System.currentTimeMillis();
String base64 = Base64.encodeBase64String(result);
long t3 = System.currentTimeMillis();

System.out.printf("raw %d -> gzip %d -> base64 %d, time1 %dms, time2 %dms", total, result.length, base64.length(), t2-t1, t3-t2);
}
}

输出为: raw 2493109 -> gzip 753932 -> base64 1005244, time1 225ms, time2 43ms

压缩了50%。

❹ 如何有效提高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== 。字符多了就没问题。自己没想明白,谁给审审!

❺ 如何在前端解压缩获得的base64Binary字符串

应该对整个输出进行gzip压缩,同时设置好Content-Encoding
gzip,而不是单单压缩部分返回的内容,部分压缩浏览器不会加压

自己看http://download.csdn.net/download/bljbljbljblj/2744049这个类库是否能解压,不能自己按照gzip原理自己写代码了,要不就不要压缩

❻ 前端把图片压缩转换成base64编码把值赐予input='hidden' 之后提交给后台. HTML5,php,Javascript,canvas

缺点你无法直接验证传来的base64数据的完整性,比如大小,文件头之类的,还需要自己来实现。

❼ 如何解决图像经Base64编译后文件增大过多的问题

LZ不用指望用各种办法压缩之后的大小比原图片还小,因为jpeg、png等格式原本就是压缩过的格式。那么压缩空间基本就在这多出来的1/3里面,我觉得这1/3的代码基本可以接受。毕竟再加上复杂的算法做更复杂的压缩格式,在解压的时候也是个时间上的代价。

❽ php 怎么将二进制流转换为base64编码

没有特别作用,因为任何人只要想解都能解开。 BASE64 是将二进制数据 (8位)编码为64个可显示的 ASCII 字符,3个 octet 编码成 4 个 octet。因此既不是压缩,也不是加密。估计把php编码成base64只是为了让人读起来麻烦一点。

❾ JAVA压缩至32K以下后的图片base64码

Java实现图片与Base64编码互转

importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
importsun.misc.BASE64Decoder;
importsun.misc.BASE64Encoder;

publicclassBase64Image{
publicstaticvoidmain(String[]args){
//测试从Base64编码转换为图片文件
StringstrImg="自己写哈";
GenerateImage(strImg,"D:\wangyc.jpg");

//测试从图片文件转换为Base64编码
System.out.println(GetImageStr("d:\wangyc.jpg"));
}

publicstaticStringGetImageStr(StringimgFilePath){//将图片文件转化为字节数组字符串,并对其进行Base64编码处理
byte[]data=null;

//读取图片字节数组
try{
InputStreamin=newFileInputStream(imgFilePath);
data=newbyte[in.available()];
in.read(data);
in.close();
}catch(IOExceptione){
e.printStackTrace();
}

//对字节数组Base64编码
BASE64Encoderencoder=newBASE64Encoder();
returnencoder.encode(data);//返回Base64编码过的字节数组字符串
}

(StringimgStr,StringimgFilePath){//对字节数组字符串进行Base64解码并生成图片
if(imgStr==null)//图像数据为空
returnfalse;
BASE64Decoderdecoder=newBASE64Decoder();
try{
//Base64解码
byte[]bytes=decoder.decodeBuffer(imgStr);
for(inti=0;i<bytes.length;++i){
if(bytes[i]<0){//调整异常数据
bytes[i]+=256;
}
}
//生成jpeg图片
OutputStreamout=newFileOutputStream(imgFilePath);
out.write(bytes);
out.flush();
out.close();
returntrue;
}catch(Exceptione){
returnfalse;
}
}
}
阅读全文

与base64压缩相关的资料

热点内容
程序员禅定 浏览:882
181小游戏服务器地址大全 浏览:256
openofficelinux中文 浏览:618
安卓内录怎么录才能清楚 浏览:519
程序员转正述职报告 浏览:801
路由器telnet命令 浏览:406
命令符怎么打开设置 浏览:131
考研数学全书pdf 浏览:612
linuxgccc 浏览:862
单个苹果耳机怎么连接安卓 浏览:564
塘管家源码 浏览:700
台剧无邪什么app可以看 浏览:590
笔记本配置服务器怎么连接 浏览:372
android代理上网设置 浏览:662
u盘加密不能显示盘符 浏览:667
去服务器玩什么游戏 浏览:138
哪个同步盘支持多个文件夹 浏览:890
苹果版的我的世界如何转到安卓 浏览:276
linuxswap空间 浏览:411
如何搭建网络到各个服务器 浏览:968