图片转Base64并压缩,解压
来源:互联网 发布:自主车企实力排名 知乎 编辑:程序博客网 时间:2024/06/01 07:23
图片转Base64并压缩
首先需要Apache下的两个jar包
首先需要Apache下的两个jar包
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
代码
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import org.apache.commons.codec.binary.Base64; import org.apache.commons.io.FileUtils; public class TestBase64Zip { public static void main(String[] args) { String base64 = base64("e:\\question.jpg"); System.out.println("经过base64转码和压缩" + base64); decode(base64, "test.jpg", "e:\\"); } /** * 把经过压缩过的base64串解码解压并写入打磁盘中 * @param base64 压缩过的base64串 * @param fileName 文件名 * @param path 路径地址 */ public static void decode(String base64, String fileName, String path) { //解码 byte[] data = Base64.decodeBase64(base64); data = unGZip(data); writeFile(data, fileName, path); } /** * 二进制文件写入文件 * @param data 二进制数据 * @param fileName 文件名 * @param path 路径地址 */ public static void writeFile(byte[] data, String fileName, String path) { try { String url = path + "//" + fileName; FileUtils.writeByteArrayToFile(new File(url), data); } catch (IOException e) { System.out.println("写文件出错" + e); } } /** * 解壓Gzip * @param data * @return */ public static byte[] unGZip(byte[] data){ byte[] b = null; try{ ByteArrayInputStream bis = new ByteArrayInputStream(data); GZIPInputStream gzip = new GZIPInputStream(bis); byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((num = gzip.read(buf, 0, buf.length)) != -1) { baos.write(buf, 0, num); } b = baos.toByteArray(); baos.flush(); baos.close(); gzip.close(); bis.close(); } catch (Exception ex){ System.out.println("解压数据流出错!!" + ex); } return b; } /** * 读取文件并压缩数据然后转Base64编码 * @param pathName 图片的绝对路径地址 * @return */ public static String base64(String pathName) { byte[] data = getPicData(pathName); if (data == null) { return null; } byte[] zipData = gZip(data); return Base64.encodeBase64String(zipData); } /** * @description 获取图片的二进制数据 * @param pathName 图片的绝对路径地址 * @return */ public static byte[] getPicData(String pathName) { byte[] data = null; try { FileInputStream fi = new FileInputStream(pathName); int length = fi.available(); data = new byte[length]; fi.read(data); fi.close(); } catch (Exception e) { System.out.println(e); } return data; } /*** * @description 压缩GZip * @param data 要压缩的二进制数据 * @return */ public static byte[] gZip(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.write(data); gzip.finish(); gzip.close(); b = bos.toByteArray(); bos.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } }
1 0
- 图片转Base64并压缩,解压
- js图片转base64并压缩
- Android 压缩图片并转Base64方法之一
- js图片转base64编码压缩上传
- android 图片转Base64压缩上传
- base64图片压缩
- HBase操作、java压缩、解压、Base64
- 第三项 zlib压缩与base64解压
- Android 图片压缩图片转Base64工具类
- js压缩图片base64长度
- 上传压缩包并解压
- PHP将图片转base64编码以及base64图片转换为图片并保存代码
- 微信端图片压缩转base64,然后转file形式上传
- Java生成并合并图片以及base64转图片
- js压缩上传的图片,并转化为base64字符串传输
- 关于nsdata的压缩的问题base64,图片转字符串,图片的压缩的问题
- 解码Base64并展示图片
- 安卓、IOS-web调用摄像头/本地文件夹以base64压缩图片传递给服务器并还原为图片
- cp: omitting directory ‘sp/’
- Android端 WebP图片压缩与传输的一点探索
- android多用户切换时notification的更新
- PHP判断用户使用手机端登录还是pc端登录(企业版)
- SQLServer找出执行慢的SQL语句
- 图片转Base64并压缩,解压
- CUDA从入门到精通
- cmake 学习
- 【8】Hibernate的事务管理
- 【bzoj3052】糖果公园 树上莫队
- iOS pop至指定页面
- Linux tc 流量控制概念与术语(一)-DiffServ
- Bot Framework FAQ
- ajax异步,不刷新页面上传PDF文件,并写入数据库,得到异步数据,提示上传成功或失败