導航:首頁 > 編程語言 > 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壓縮相關的資料

熱點內容
為什麼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選擇頭像 瀏覽:911
程序員是怎麼刪電腦垃圾的 瀏覽:884
javagz壓縮 瀏覽:743
圖片為什麼會自動加密 瀏覽:279