import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import java.util.zip.Inflater; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import org.apache.log4j.Logger; import org.apache.tools.bzip2.CBZip2InputStream; import org.apache.tools.bzip2.CBZip2OutputStream; public class ZipUtil { private static final Logger LOG = Logger.getLogger(ZipUtil.class); private static final int BUFF_SIZE = 4096; /*************************************************************************** * 压缩GZip * * @param data * @author taoyi * @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; } /*************************************************************************** * 解压GZip * * @param data * @author taoyi * @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) { ex.printStackTrace(); } return b; } /*************************************************************************** * 压缩Zip * * @param data * @author zhouxaobo * @return */ public static byte[] zip(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(bos); ZipEntry entry = new ZipEntry("zip"); entry.setSize(data.length); zip.putNextEntry(entry); zip.write(data); zip.closeEntry(); zip.close(); b = bos.toByteArray(); bos.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } /*************************************************************************** * 解压Zip * * @param data * @author zhouxxiaobo * @return */ public static byte[] unZip(byte[] data) { byte[] b = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(data); ZipInputStream zip = new ZipInputStream(bis); while (zip.getNextEntry() != null) { byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((num = zip.read(buf, 0, buf.length)) != -1) { baos.write(buf, 0, num); } b = baos.toByteArray(); baos.flush(); baos.close(); } zip.close(); bis.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } /*************************************************************************** * 压缩BZip2 * @param data * @author zhouxiaobo * @return */ public static byte[] bZip2(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); CBZip2OutputStream bzip2 = new CBZip2OutputStream(bos); bzip2.write(data); bzip2.flush(); bzip2.close(); b = bos.toByteArray(); bos.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } /*************************************************************************** * 解压BZip2 * @param data * @author zhouxiaobo * @return */ public static byte[] unBZip2(byte[] data) { byte[] b = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(data); CBZip2InputStream bzip2 = new CBZip2InputStream(bis); byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((num = bzip2.read(buf, 0, buf.length)) != -1) { baos.write(buf, 0, num); } b = baos.toByteArray(); baos.flush(); baos.close(); bzip2.close(); bis.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } /** * * @param str * 待压缩的字符串 * @return * @throws IOException * @author zhouxiaobo */ public static String compress(String str) throws IOException { if (str == null || str.length() == 0) { return str; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(out); gzip.write(str.getBytes()); gzip.close(); System.out.println("压缩后:" + out.toString()); return out.toString("GBK"); } /** * * @param str * 已压缩的字符串 * @return * @throws IOException * @author taoyi */ public static String uncompress(String str) throws IOException { if (str == null || str.length() == 0) { return str; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("GBK")); GZIPInputStream gunzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while ((n = gunzip.read(buffer)) >= 0) { out.write(buffer, 0, n); } // toString()使用平台默认编码,也可以显式的指定如toString("GBK") return out.toString("GBK"); } /** * 解压c++压缩的zlib * * @param compressedData * @return */ public static byte[] unZipInflate(byte[] compressedData) { Inflater decompressor = new Inflater(); decompressor.setInput(compressedData); // Create an expandable byte array to hold the decompressed data ByteArrayOutputStream bos = new ByteArrayOutputStream( compressedData.length); // Decompress the data byte[] buf = new byte[1024]; while (!decompressor.finished()) { try { int count = decompressor.inflate(buf); bos.write(buf, 0, count); } catch (DataFormatException e) { //e.printStackTrace(); LOG.error("解压C++压缩包出错!"); break; } } try { bos.close(); } catch (IOException e) { //e.printStackTrace(); LOG.error("流关闭异常!"); } // Get the decompressed data return bos.toByteArray(); } public static String inflater(byte[] buff) { String str = null; int len = buff.length; byte[] result = new byte[len]; if ((null == buff) || (0 == len)) { return null; } try { Inflater decompresser = new Inflater(); int resultlen = 0; decompresser.setInput(buff, 0, buff.length); resultlen = decompresser.inflate(result); decompresser.end(); str = new String(result, 0, resultlen, "UTF-8"); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); } catch (DataFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } return str; } /** * 压缩压缩的zlib * * @param compressedData * @return * @author zhouxiaobo */ public static byte[] ZipDnflate(byte[] compressedData) throws DataFormatException { Deflater compressor = new Deflater(); compressor.setInput(compressedData); compressor.finish(); // Create an expandable byte array to hold the decompressed data ByteArrayOutputStream bos = new ByteArrayOutputStream( compressedData.length); // Decompress the data byte[] buf = new byte[1024]; while (!compressor.finished()) { int count = compressor.deflate(buf); bos.write(buf, 0, count); } try { bos.close(); } catch (IOException e) { e.printStackTrace(); } // Get the decompressed data /* byte [] byteArrey=bos.toByteArray(); String strZip=new String(byteArrey);*/ return bos.toByteArray(); } /** * 解压协议包体部分 ,压缩格式为zip */ private static Object extract(byte[] compressed) { if (compressed == null) return null; // byte[] compressed; ByteArrayOutputStream out = null; ByteArrayInputStream in = null; ZipInputStream zin = null; Object decompressed = null; try { out = new ByteArrayOutputStream(); in = new ByteArrayInputStream(compressed); byte[] buffer = new byte[BUFF_SIZE]; int offset = -1; zin = new ZipInputStream(in); ZipEntry entry = zin.getNextEntry(); if (entry != null) { while ((offset = zin.read(buffer)) != -1) { out.write(buffer, 0, offset); } } ByteArrayInputStream byteInput = new ByteArrayInputStream(out .toByteArray()); ObjectInputStream ois = new ObjectInputStream(byteInput); decompressed = ois.readObject(); } catch (ZipException e1) { // TODO Auto-generated catch block LOG.info("获得压缩流数据出现异常!"); e1.printStackTrace(); } catch (IOException e1) { LOG.info("I/O流出现异常!"); // TODO Auto-generated catch block e1.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (zin != null) { try { zin.close(); zin = null; } catch (IOException e) { } } if (in != null) { try { in.close(); in = null; } catch (IOException e) { } } if (out != null) { try { out.close(); out = null; } catch (IOException e) { } } } return decompressed; } }
您还没有登录,请您登录后再发表评论
Java作为一种广泛使用的编程语言,也提供了实现视频压缩的能力。本篇将详细探讨如何使用Java来实现视频压缩,以及涉及到的相关知识点。 首先,我们要理解视频压缩的基本原理。视频是由一帧一帧的静态图像(图片)...
本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...
java压缩字符串
在Java编程语言中,处理图片压缩是一项常见的任务,特别是在存储、传输或展示大量图像资源时。本主题将深入探讨如何使用Java实现图片压缩,并能够将其调整到任意大小,同时保持图片质量并避免变形。 首先,我们需要...
在Java编程语言中,处理图像是一项常见的任务,其中包括图片压缩。Java提供了丰富的API来处理图像,其中`java.awt.image.BufferedImage`和`javax.imageio.ImageIO`类是核心工具。本篇文章将深入探讨如何利用Java后台...
本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下是该主题涵盖的一些关键知识点: 1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种...
在Java编程语言中,内置了多种压缩和解压缩的方式,如Gzip和Zip。这篇博客“java自带压缩方式的性能比较”可能详细分析了这两种压缩方法的效率和应用场景。通过提供的代码文件`CompressTestMain.java`、`GzipUtils....
在Java编程语言中,处理图片压缩是一项常见的任务,特别是在网页开发、移动应用或者任何需要减小图片文件大小的场景中。"java图片压缩处理 支持gif"这个标题表明我们将探讨如何使用Java来处理和压缩GIF动态图,因为...
在Java编程环境中,图片压缩是一项常见的任务,尤其在处理用户上传的图像时,为了节省存储空间、优化网页加载速度或符合服务器对文件大小的限制,往往需要对图片进行压缩。以下是一些Java实现图片压缩的方法: 1. *...
Java批量压缩图片格式的PDF档(源码Demo) 适用:仅针对纯图片型的pdf(类似扫描版)进行压缩 原理:压缩图片然后再另存成新文件 实例如下: ├── META-INF │ └── MANIFEST.MF ├── pom.xml └── src ├...
Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高,只能用炫酷来形容,感兴趣就下载看看吧
java 开发压缩图片文件大小,2m-->200k 不是压缩宽高的
java 压缩与解压缩工具
以下是一个简单的示例,展示如何使用Java压缩一个文件夹: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.zip.ZipEntry; ...
在Java编程语言中,压缩高清图片通常涉及到两个主要的领域:图像处理和文件编码。本文将详细介绍两种常用的方法,它们分别是使用Java自带的ImageIO类和利用第三方库如Apache Commons Compress。 首先,我们来看看...
根据提供的文件信息,我们可以总结出以下关于“Java压缩上传图片”的相关知识点: ### 1. 知识点一:图片压缩的基本概念 - **定义**:图片压缩是一种减少图像文件大小的技术,通常用于减少存储空间需求或加快网络...
PngEncoder.java针对java平台处理png压缩算法
在Java开发中,通过调用FFmpeg的命令行工具,可以方便地集成到应用程序中进行视频处理,例如本实例中的视频压缩。在百度AI和腾讯AI的活体验证场景中,高质量、低大小的视频文件是必要的,因此使用FFmpeg进行视频压缩...
相关推荐
Java作为一种广泛使用的编程语言,也提供了实现视频压缩的能力。本篇将详细探讨如何使用Java来实现视频压缩,以及涉及到的相关知识点。 首先,我们要理解视频压缩的基本原理。视频是由一帧一帧的静态图像(图片)...
本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...
java压缩字符串
在Java编程语言中,处理图片压缩是一项常见的任务,特别是在存储、传输或展示大量图像资源时。本主题将深入探讨如何使用Java实现图片压缩,并能够将其调整到任意大小,同时保持图片质量并避免变形。 首先,我们需要...
在Java编程语言中,处理图像是一项常见的任务,其中包括图片压缩。Java提供了丰富的API来处理图像,其中`java.awt.image.BufferedImage`和`javax.imageio.ImageIO`类是核心工具。本篇文章将深入探讨如何利用Java后台...
本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下是该主题涵盖的一些关键知识点: 1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种...
在Java编程语言中,内置了多种压缩和解压缩的方式,如Gzip和Zip。这篇博客“java自带压缩方式的性能比较”可能详细分析了这两种压缩方法的效率和应用场景。通过提供的代码文件`CompressTestMain.java`、`GzipUtils....
在Java编程语言中,处理图片压缩是一项常见的任务,特别是在网页开发、移动应用或者任何需要减小图片文件大小的场景中。"java图片压缩处理 支持gif"这个标题表明我们将探讨如何使用Java来处理和压缩GIF动态图,因为...
在Java编程环境中,图片压缩是一项常见的任务,尤其在处理用户上传的图像时,为了节省存储空间、优化网页加载速度或符合服务器对文件大小的限制,往往需要对图片进行压缩。以下是一些Java实现图片压缩的方法: 1. *...
Java批量压缩图片格式的PDF档(源码Demo) 适用:仅针对纯图片型的pdf(类似扫描版)进行压缩 原理:压缩图片然后再另存成新文件 实例如下: ├── META-INF │ └── MANIFEST.MF ├── pom.xml └── src ├...
Java压缩图片util,可等比例宽高不失真压缩,也可直接指定压缩后的宽高,只能用炫酷来形容,感兴趣就下载看看吧
java 开发压缩图片文件大小,2m-->200k 不是压缩宽高的
java 压缩与解压缩工具
以下是一个简单的示例,展示如何使用Java压缩一个文件夹: ```java import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.zip.ZipEntry; ...
在Java编程语言中,压缩高清图片通常涉及到两个主要的领域:图像处理和文件编码。本文将详细介绍两种常用的方法,它们分别是使用Java自带的ImageIO类和利用第三方库如Apache Commons Compress。 首先,我们来看看...
根据提供的文件信息,我们可以总结出以下关于“Java压缩上传图片”的相关知识点: ### 1. 知识点一:图片压缩的基本概念 - **定义**:图片压缩是一种减少图像文件大小的技术,通常用于减少存储空间需求或加快网络...
PngEncoder.java针对java平台处理png压缩算法
在Java开发中,通过调用FFmpeg的命令行工具,可以方便地集成到应用程序中进行视频处理,例如本实例中的视频压缩。在百度AI和腾讯AI的活体验证场景中,高质量、低大小的视频文件是必要的,因此使用FFmpeg进行视频压缩...