导航:首页 > 编程语言 > javagz压缩

javagz压缩

发布时间:2025-09-29 22:50:04

java图片压缩不失真的方法-java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

java是怎么实现等比例缩小图片而不失真的啊?

按照等比例的长宽进行缩放就可以了呀,就好像你打开一个图片,一般都有缩放功能,原理是一样的,等比例的缩放,关键像素还是存在的。

java如何实现把一个大图片压缩到指定大小的图片且长宽比不变

也就是图片压缩,可以不修改任何大小的压缩(速度快),也可等比例修改大小压缩(较慢)

下面这是一段等比例缩小图片的方法。

publicStringcompressPic(StringinputDir,StringoutputDir,

StringinputFileName,StringoutputFileName,intwidth,

intheight,booleangp,Stringhzm){

try{

if(!()){

return"";

}

Imageimg=(image);

//判断图片格式是否正确

if((null)==-1){

return"no";

}else{

intnewWidth;intnewHeight;

//判断是否是等比缩放

if(gp==true){

//为等比缩放计算输出的图片宽度及高度

doublerate1=((double)(null))/(double)width;

doublerate2=((double)(null))/(double)height;

//根据缩放比率大的进行缩放控制

doublerate=rate1>rate2?rate1:rate2;

newWidth=(int)(((double)(null))/rate);

newHeight=(int)(((double)(null))/rate);

}else{

newWidth=(null);//输出的图片宽度

newHeight=(null);//输出的图片高度

}

BufferedImagetag=newBufferedImage((int)newWidth,(int)newHeight,_INT_RGB);

/*

*_SMOOTH的缩略算法生成缩略图片的平滑度的

*优先级比速度高生成的图片质量比较好但速度慢

*/

Imageim=(newWidth,newHeight,_SMOOTH);

().drawImage(im,0,0,null);

FileOutputStreamout=newFileOutputStream(outputDir+outputFileName);

//JPEGImageEncoder可适用于其他图片类型的转换

JPEGImageEncoderencoder=(out);

(tag);

();

}

}catch(IOExceptionex){

();

}

return"ok";

}

求助java压缩图片存储大小的方法

可以使用Draw这个类,通过改变像素来改变存储大小,实例如下:

public_tatic_oolean_ompressPic(String_rcFilePath,_tring_escFilePath)_hrows_OException_

____File_ile=_ull;

____BufferedImage_rc=_ull;

____FileOutputStream_ut=_ull;

____ImageWriter_mgWrier;

____ImageWriteParam_mgWriteParams;

____//_付ㄐ赐计姆绞轿_jpg

____imgWrier=("jpg").next();

____imgWriteParams=_ew(

________null);

____//_褂醚顾,必须指定压缩方式为MODE_EXPLICIT

____(_EXPLICIT);

____//_饫镏付ㄑ顾酰某潭,参数qality是取值0~1范围内,

____((float)1);

____(_DISABLED);

____ColorModel_olorModel=(new_ile(srcFilePath)).getColorModel();//();

____//_付ㄑ顾跏笔褂玫纳誓J

//____(new(

//________colorModel,(16,16)));

____(new(

________colorModel,(16,16)));

____try_

______if(isBlank(srcFilePath))_

________return_alse;

______}_lse_

________file=_ew_ile(srcFilePath);(());

________src=(file);

________out=_ew_ileOutputStream(descFilePath);

________();

________//_匦胂戎付_out值,才能调用write方法,_mageOutputStream可以通过任何

________//_utputStream构造

________((out));

________//_饔_rite方法,就可以向输入流写图片

________(null,_ew_IOImage(src,_ull,_ull),

____________imgWriteParams);

________();

________();

______}

____}_atch(Exception_)_

______e.printStackTrace();

______return_alse;

____}

____return_rue;

__}

public_tatic_oolean_sBlank(String_tring)_

____if(string==_ull_|()==0_|().equals(""))_

______return_rue;

____}

____return_alse;

__}

⑵ 电脑文件zip如何压缩java实现对zip文件的压缩

电脑文件zip如何压缩(java实现对zip文件的压缩)
一、java实现压缩为zip
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
publicclassZipUtils{
privatestaticfinalintBUFFER_SIZE=2*1024;
publicstaticvoiddirFile(Filedir){
File[]files=dir.listFiles();//得到File数组,获得目录下所有文件
for(Filefile:files){//遍历所有的子目录和文件
if(file.isDirectory()){
dirFile(file);//如果是目录递归调用dirFile()
}
//成功压缩文件后,对原文件进行删除
file.delete();
}
//顺带把对应的目录进行删除
dir.delete();
}
/**
*压缩成ZIP方法1
*@paramsrcDir压缩文件夹路径
*@paramout压缩文件输出流
*@paramKeepDirstructure是否保留原来的目录结构,true:保留目录结构;
*false:所有文件跑到压缩包根目录下(注意:不保留目录结构可能会出现同名文件,会压缩失败)
*@throwsRuntimeException压缩失败会抛出运行时异常
*/
publicstaticvoidtoZip(StringsrcDir,OutputStreamout,booleanKeepDirstructure)
throwsRuntimeException{
longstart=System.currentTimeMillis();
ZipOutputStreamzos=null;
try{
zos=newZipOutputStream(out);
FilesourceFile=newFile(srcDir);
compress(sourceFile,zos,sourceFile.getName(),KeepDirstructure);
longend=System.currentTimeMillis();
System.out.println("压缩完成,耗时:"+(end-start)+"ms");
}catch(Exceptione){
thrownewRuntimeException("ziperrorfromZipUtils",e);
}finally{
if(zos!=null){
try{
zos.close();
}catch(IOExceptione){
e.printstacktrace();
}
}
}
}
/**
*递归压缩方法
*@paramsourceFile源文件
*@paramzoszip输出流
*@paramname压缩后的名称
*@paramKeepDirstructure是否保留原来的目录结构,会压缩失败)
*@throwsException
*/
privatestaticvoidcompress(FilesourceFile,ZipOutputStreamzos,Stringname,
booleanKeepDirstructure)throwsException{
byte[]buf=newbyte[BUFFER_SIZE];
if(sourceFile.isFile()){
//向zip输出流中添加一个zip实体,构造器中name为zip实体的文件的名字
zos.putNextEntry(newZipEntry(name));
//文件到zip输出流中
intlen;
FileInputStreamin=newFileInputStream(sourceFile);
while((len=in.read(buf))!=-1){
zos.write(buf,len);
}
//Completetheentry
zos.closeEntry();
in.close();
}else{
File[]listFiles=sourceFile.listFiles();
if(listFiles==null||listFiles.length==0){
//需要保留原来的文件结构时,需要对空文件夹进行处理
if(KeepDirstructure){
//空文件夹的处理
zos.putNextEntry(newZipEntry(name+"/"));
//没有文件,不需要文件的
zos.closeEntry();
}
}else{
for(Filefile:listFiles){
//判断是否需要保留原来的文件结构
if(KeepDirstructure){
//注意:file.getName()前面需要带上父文件夹的名字加一斜杠,
//不然最后压缩包中就不能保留原来的文件结构,即:所有文件都跑到压缩包根目录下了
compress(file,name+"/"+file.getName(),KeepDirstructure);
}else{
compress(file,file.getName(),KeepDirstructure);
}
}
}
}
}
}

阅读全文

与javagz压缩相关的资料

热点内容
安卓手机如何打开fsn文件 浏览:274
为什么nba2k21没有安卓 浏览:331
程序员难问题 浏览:638
压缩面膜怎么打开 浏览:186
深圳程序员谈梅州 浏览:436
电脑检测服务器怎么弄 浏览:724
androidvalues文件夹 浏览:152
中国程序员出海 浏览:527
全书pdf下载 浏览:151
百家号app个人主页在哪里 浏览:467
编译原理传地址传值传名 浏览:334
java的浏览功能 浏览:271
张岩李秀数据结构与算法第五版 浏览:110
查询pdf 浏览:717
安卓系统下怎么截长图 浏览:105
速达服务器ip地址 浏览:251
浙理办app如何下载执照电子版 浏览:869
php选择头像 浏览:912
程序员是怎么删电脑垃圾的 浏览:884
javagz压缩 浏览:744