dct图像压缩java代码_肿么用DCT.java文件对图片进行压缩

这段代码展示了如何使用Java进行图像的DCT压缩。它包括`zip`和`unzip`方法,分别用于压缩和解压缩文件。压缩过程中,通过`ZipOutputStream`将文件写入ZIP档案,而解压缩则通过`ZipInputStream`读取并提取ZIP档案中的文件。
摘要由CSDN通过智能技术生成

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.util.zip.ZipEntry;

import java.util.zip.ZipInputStream;

import java.util.zip.ZipOutputStream;public class Zip {

// 压缩

public static void zip(String zipFileName, String inputFile)

throws Exception {

File f = new File(inputFile);

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(

zipFileName));

zip(out, f, null);

System.out.println("zip done");

out.close();

} private static void zip(ZipOutputStream out, File f, String base)

throws Exception {

System.out.println("zipping " + f.getAbsolutePath());

if (f != null && f.isDirectory()) {

File[] fc = f.listFiles();

if (base != null)

out.putNextEntry(new ZipEntry(base + "/"));

base = base == null ? "" : base + "/";

for (int i = 0; i < fc.length; i++) {

zip(out, fc[i], base + fc[i].getName());

}

} else {

out.putNextEntry(new ZipEntry(base));

FileInputStream in = new FileInputStream(f);

int b;

while ((b = in.read()) != -1)

out.write(b);

in.close();

}

} // 解压

public static void unzip(String zipFileName, String outputDirectory)

throws Exception {

ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));

ZipEntry z;

while ((z = in.getNextEntry()) != null) {

String name = z.getName();

if (z.isDirectory()) {

name = name.substring(0, name.length() - 1);

File f = new File(outputDirectory + File.separator + name);

f.mkdir();

System.out.println("MD " + outputDirectory + File.separator

+ name);

} else {

System.out.println("unziping " + z.getName());

File f = new File(outputDirectory + File.separator + name);

f.createNewFile();

FileOutputStream out = new FileOutputStream(f);

int b;

while ((b = in.read()) != -1)

out.write(b);

out.close();

}

}

in.close();

} public void deleteFolder(File dir) {

File filelist[] = dir.listFiles();

int listlen = filelist.length;

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

if (filelist[i].isDirectory()) {

deleteFolder(filelist[i]);

} else {

filelist[i].delete();

}

}

dir.delete();// 删除当前目录

} public static void main(String[] args) {

try {

// TestZip t = new TestZip();

// t.zip("c:\\test.zip","c:\\test");

// t.unzip("c:\\test.zip","c:\\test2");

} catch (Exception e) {

e.printStackTrace(System.out);

}

}

}

取消

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值