图片解压缩

Posted 小~虎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片解压缩相关的知识,希望对你有一定的参考价值。

import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**
* User : Jixiaohu
* Date : 2017-07-03.
* Time : 16:18.
*/
public class GzipUtils {

public static byte[] gzip(byte[] data) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data);
gzip.finish();
gzip.close();
byte[] ret = bos.toByteArray();
bos.close();
return ret;
}

public static byte[] ungzip(byte[] data) throws Exception {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
GZIPInputStream gzip = new GZIPInputStream(bis);
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((num = gzip.read(buf, 0, buf.length)) != -1) {
bos.write(buf, 0, num);
}
gzip.close();
bis.close();
byte[] ret = bos.toByteArray();
bos.flush();
bos.close();
return ret;
}

public static void main(String[] args) throws Exception {
//读取文件
String readPath = System.getProperty("user.dir") + File.separator
+ "sources" + File.separatorChar + "006.jpg";
System.out.println(readPath);
File file = new File(readPath);
FileInputStream in = new FileInputStream(file);
byte[] data = new byte[in.available()];
in.read(data);
in.close();

System.out.println("文件原始大小:" + data.length);

//测试压缩
byte[] ret1 = GzipUtils.gzip(data);
System.out.println("压缩之后大小:" + ret1.length);

//测试解压缩
byte[] ret2 = GzipUtils.ungzip(ret1);
System.out.println("还原之后大小:" + ret2.length);

//写出文件
String writePath = System.getProperty("user.dir") + File.separatorChar
+"receive" + File.separatorChar+"006.jpg";
System.out.println(writePath);
FileOutputStream fos = new FileOutputStream(writePath);
fos.write(ret2);
fos.close();
}
}

以上是关于图片解压缩的主要内容,如果未能解决你的问题,请参考以下文章

Zip - 压缩解压缩工具

图片的解压缩渲染

iOS 资源文件的解压缩与加解密

实例:使用OKGO下载网络压缩包资源,然后解压缩放在本地使用

算法系列之使用赫夫曼编码的实战应用对文件进行压缩解压缩

压缩与解压缩