導航:首頁 > 編程語言 > 壓縮上傳圖片java

壓縮上傳圖片java

發布時間:2025-04-15 19:54:28

A. 如何使用java壓縮文件夾成為zip包

在JDK中有一個zip工具類:

java.util.zip Provides classes for reading and writing the standard ZIP and
GZIP file formats.

使用此類可以將文件夾或者多個文件進行打包壓縮操作。

在使用之前先了解關鍵方法:

ZipEntry(String name) Creates a new zip entry with the specified name.

使用ZipEntry的構造方法可以創建一個zip壓縮文件包的實例,然後通過ZipOutputStream將待壓縮的文件以流的形式寫進該壓縮包中。具體實現代碼如下:

importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.zip.ZipEntry;
importjava.util.zip.ZipOutputStream;
/**
*將文件夾下面的文件
*打包成zip壓縮文件
*
*@authoradmin
*
*/
publicfinalclassFileToZip{

privateFileToZip(){}

/**
*將存放在sourceFilePath目錄下的源文件,打包成fileName名稱的zip文件,並存放到zipFilePath路徑下
*@paramsourceFilePath:待壓縮的文件路徑
*@paramzipFilePath:壓縮後存放路徑
*@paramfileName:壓縮後文件的名稱
*@return
*/
publicstaticbooleanfileToZip(StringsourceFilePath,StringzipFilePath,StringfileName){
booleanflag=false;
FilesourceFile=newFile(sourceFilePath);
FileInputStreamfis=null;
BufferedInputStreambis=null;
FileOutputStreamfos=null;
ZipOutputStreamzos=null;

if(sourceFile.exists()==false){
System.out.println("待壓縮的文件目錄:"+sourceFilePath+"不存在.");
}else{
try{
FilezipFile=newFile(zipFilePath+"/"+fileName+".zip");
if(zipFile.exists()){
System.out.println(zipFilePath+"目錄下存在名字為:"+fileName+".zip"+"打包文件.");
}else{
File[]sourceFiles=sourceFile.listFiles();
if(null==sourceFiles||sourceFiles.length<1){
System.out.println("待壓縮的文件目錄:"+sourceFilePath+"裡面不存在文件,無需壓縮.");
}else{
fos=newFileOutputStream(zipFile);
zos=newZipOutputStream(newBufferedOutputStream(fos));
byte[]bufs=newbyte[1024*10];
for(inti=0;i<sourceFiles.length;i++){
//創建ZIP實體,並添加進壓縮包
ZipEntryzipEntry=newZipEntry(sourceFiles[i].getName());
zos.putNextEntry(zipEntry);
//讀取待壓縮的文件並寫進壓縮包里
fis=newFileInputStream(sourceFiles[i]);
bis=newBufferedInputStream(fis,1024*10);
intread=0;
while((read=bis.read(bufs,0,1024*10))!=-1){
zos.write(bufs,0,read);
}
}
flag=true;
}
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}finally{
//關閉流
try{
if(null!=bis)bis.close();
if(null!=zos)zos.close();
}catch(IOExceptione){
e.printStackTrace();
thrownewRuntimeException(e);
}
}
}
returnflag;
}

publicstaticvoidmain(String[]args){
StringsourceFilePath="D:\TestFile";
StringzipFilePath="D:\tmp";
StringfileName="12700153file";
booleanflag=FileToZip.fileToZip(sourceFilePath,zipFilePath,fileName);
if(flag){
System.out.println("文件打包成功!");
}else{
System.out.println("文件打包失敗!");
}
}

}

B. 電腦文件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);
}
}
}
}
}
}

C. js鍥劇墖鍘嬬緝鍒版寚瀹氬ぇ灝忎笉鍙-java濡備綍瀹炵幇鎶婁竴涓澶у浘鐗囧帇緙╁埌鎸囧畾澶у皬鐨勫浘鐗囦笖闀垮芥瘮涓嶅彉錛

js鍘嬬緝鍥劇墖鍒板滻瀹氬儚緔犱互鍐咃紝500k涓轟緥

鏈鏂囨棬鍦ㄦ帰絀秊s鍘嬬緝鍥劇墖鐨勪袱縐嶆柟寮:

鏀瑰彉鍥劇墖闀垮

,

鏀瑰彉鍥劇墖璐ㄩ噺

,鍜岀粨鍚堜簡浠ヤ笂涓よ呯殑

鏈緇堟柟妗

棣栧厛,闃呰繪湰鏂囬渶瑕佺煡閬揷anvas鐨勪袱涓鏂規硶

榪欎袱涓鏂規硶鍏蜂綋鐨勮存槑鍙浠ュ湪MDN涓婃煡鐪,鍏充簬鍥劇墖鍘嬬緝,涔熸湁寰堝氱幇鎴愮殑鍗氬㈠彲浠ョ洿鎺ョ敤銆備絾鏄閭d簺鍗氬㈤兘鏈変釜闂棰,騫舵病鏈夊叧蹇冧箣鍚庡浘鐗囩殑鍘嬬緝璐ㄩ噺銆

鎴戣瘯鐫鐢ㄤ竴涓鐜版垚鐨勪緥瀛愬幓璺戜簡涓涓,涓涓1.7M鐨勫浘鐗囧帇緙╁埌浜23k,鍫縐板儚緔犵駭姣佺伃鎬х牬鍧忋

鍋囧備竴寮犲ぇ鍥懼彲鑳藉寘鍚鐫寰堝氭枃瀛楃瓑鍏抽敭淇℃伅,蹇呴』涓婁紶涔嬪悗浣跨敤鏂硅兘娓呮櫚杈ㄨゃ傛墍浠ヨ佸帇緙╀箣鍚庤川閲忓敖鍙鑳芥帴榪500k鐨勩500k鍍忕礌浠ュ唴,灝辨槸鑻ヤ竴寮犲浘瀹藉害涓1024,鍒欓珮搴︿笉鑳借秴榪500銆傚洜涓哄浘鐗囨湁鍏朵粬鐨勪俊鎮,涔熸槸瑕佸崰澶у皬鐨勩傚嵆涓嶅緱澶т簬

1024*500

鎵浠,鏍規嵁闇奼,涓婁紶鍥劇墖涓嶈兘瓚呰繃500k鐨勬儏鍐典笅灝藉彲鑳戒繚鐣欏浘鐗囩殑娓呮櫚搴︺傚綋鐒跺傛灉鍙浠ョ殑鎯呭喌涓嬬敤涓婇潰鎻愬埌鐨勮劇疆鍘嬬緝紼嬪害涓0.9,0.8璇曡瘯鐪,鍥劇墖璐ㄩ噺鍙浠ユ帴鍙,澶у皬浼氭湁澶у箙搴︾殑緙╁皬銆

濡傛灉涓嶅帇緙,闈犺皟鏁村浘鐗囬暱瀹藉幓鎺у埗涓婁紶澶у皬鍛?

鍘熺悊寰堢畝鍗,灝辨槸闈犱笉鏂鍦扮緝灝忛檺瀹氱殑鏈澶у介珮,鐩村埌鏈緇堥暱瀹界殑縐灝忎簬瑙勫畾鐨勫ぇ灝忋

榪欑嶆柟娉曟湁鍙鑳芥渶鍚庡緱鍑虹殑鍥劇墖鐨勫ぇ灝忎細鐣ュぇ浜庤勫畾澶у皬,鍘熷洜涓婃枃涔熸彁鍒拌繃浜,濡傛灉鎯充嬌鐢ㄨ繖縐嶆柟娉,鍙鑷琛屽啀璋冩暣涓涓嬨

涓婇潰鐨勬柟娉曟湁涓闂棰,灝辨槸鏀瑰彉浜嗗浘鐗囩殑鍘熷嬮暱瀹姐傚傛灉涓涓鍥劇殑闀垮借凍澶熷ぇ,鍘嬬緝鍥劇墖璐ㄩ噺,緋婁竴鐐逛絾鏄鍐呭圭湅寰楁竻涔熸槸ok鐨勫槢銆傛墍浠,璺熶笂闈㈠悓鐞,鎴戜滑鍙浠ヤ笉鏂璋冩暣鍥劇墖鐨勮川閲忚懼畾鐩村埌澶у皬鍚堥,閭d箞,濡備綍鍦ㄥ浘鐗囦笂浼犱箣鍓嶇煡閬撳浘鐗囩殑澶у皬鍛?

棣栧厛,闇瑕佺煡閬撶殑涓鐐規槸,鍘嬬緝涔嬪悗鎷垮埌鐨刡ase64瀛楃︿覆浼氳漿鎴恇lob瀵硅薄,鐒跺悗浼犵粰鏈嶅姟絝銆

鍙浠ユ煡闃呮枃妗,blob瀵硅薄鏈変釜灞炴ф槸size

榪欎釜size灝辨槸涓婁紶涔嬪悗瀹為檯鐨勬枃浠跺ぇ灝忋

鍙傜収涓婇潰鐨勬濊礬,鍙浠ユ瘡嬈℃敼鍙('image/'+fileType,level);level鐨勫,鍘昏皟鏁村帇緙╁浘鐗囪川閲,鐒跺悗鐢╞lob瀵硅薄鐨剆ize鍘婚獙璇佹槸鍚︽弧瓚500k浠ュ唴鐨勯渶奼傘

鍏充簬鐨刲evel鍒板簳鏄鎬庝箞璁$畻鐨,MDN鏂囨。閲屼篃娌¤,鍐欎簡涓寰鐜涓嬈″噺灝0.1鐨刲evel鍘嬬緝浜嗗嚑涓鍥劇墖

鐢ㄥ姞鍑忎箻闄ょ畻浜嗕竴涓,娌℃壘鍒拌勫緥,鏁板︿笉濂芥斁寮冧簡(榪欎釜涓滆タ濂藉儚涔熶笉鏄鑳借傚療鍑烘潵鐨,鐪嬬粨鏋滆窡鍒濆嬪ぇ灝忔病鍟ュ叧緋)銆

榪欓噷瑕佹敞鎰忕殑鏄,鏈夊彲鑳介亣鍒拌秴澶у浘鐗,0.1鐨刲evel鍙鑳戒笉瓚充互鍘嬬緝鍒500k,鎵浠ュ皬浜0.1鐨勬椂鍊,鏀瑰彉level閫掑噺鐨勫樊鍊肩戶緇鍘嬬緝涓嬪幓

鍦ㄥ紑濮嬫帴鏀跺埌鍥劇墖鐨勬椂鍊欑粰涓涓猯oading澧炲姞鐢ㄦ埛鐨勮愬績濂戒簡,loading涓囧瞾~

鍏跺疄鍗曠函鐨勫帇緙╄川閲忛亣鍒扮◢澶х殑鍥劇墖,浼氬艱嚧欏甸潰楂橀戣$畻,鐒跺悗欏甸潰鍩烘湰灝辯敤涓嶄簡浜--銆傛湁灝濊瘯榪囩敤iphone鐨勪竴涓灞忓箷鎴鍥(10M宸﹀彸),鍘嬬殑鏃跺欑◢榪囦竴浼,鏁翠釜鎵嬫満閮藉湪鍙戠儷,鍙鑳芥潃榪涚▼銆

鎵浠,鑻ュ歸暱搴︽病鏈夌壒孌婄殑闄愬埗,鍙浠ュ仛涓涓緙╂斁,鍘誨姞蹇鍘嬬緝鐨勮繘搴,鎻愰珮鑳藉帇緙╃殑鍥劇墖澶у皬涓婇檺銆

欏甸潰鍒頒簡ios涓婅繕鏄涓嶈--,鍙浠ョ湅鍒版渶鍚庡浘鐗噇evel涓0.001,鏈闀胯竟涓764銆

闂棰樿繕鏄寰鐜嬈℃暟榪樻槸榪囧,璁$畻棰戠巼澶楂樸備粠鍥句腑鍙鐪嬪嚭,瀵逛簬澶у浘鏉ヨ,鍒濆嬭懼畾鐨刲evel鍜屽浘鐗囧昂瀵歌繃浜庡芥澗,鍙浠ヤ紭鍖栦竴涓嬪垵濮媗evel鍜屽昂瀵搞

鏈夌殑鏃跺欒繕浼氶亣鍒頒竴寮犲浘鐗囨棤璁哄備綍涔熷帇涓嶅埌500k,灝辨槸涓婁竴嬈″拰榪欐$殑鍘嬬緝鍚庡ぇ灝忔病鏈夊彉鍖,榪欑嶆儏鍐甸渶瑕佹姏閿,涓嶈╁驚鐜緇х畫銆

澶у浘鐗囩殑絳夊緟鏃墮棿紼嶉暱,鍙浠ョ粰鐢ㄦ埛鍏堥勮堜竴涓猙ase64鐨勫浘鐗囧炲姞絳夊緟鑰愬績,鏂規硶鍚嶄負getImgBase64,榪欓噷閮戒竴騫剁粰鍑轟簡

瑙e喅鐨勯殣鎮:涓婇潰榪欎釜鏂規堜細鍑虹幇鎴戦渶瑕佷竴涓500k鐨勭収鐗,鍘嬪埌浜520k涔嬪悗,鍐嶅帇浜嗕竴嬈°傛湁鏃跺欒繖鏈鍚庣殑涓嬈′細鐗瑰埆澶稿紶,鐩存帴灝嗗浘鐗囧紕鍒頒簡鍑犲嶮k銆

鍙傝冧簡:

榪欎釜搴撻噷闈㈡湁涓鏂規硶compressAccurately,榪欎釜鏂規硶鍙浠ユ瘮杈冪簿鍑嗗湴鍘嬬緝銆傚伔鍋風炕浜嗕竴涓嬫簮鐮併

鍏跺疄涓婁竴涓鏂規堢殑鐥涚偣灝卞湪浜,濡備綍鍦ㄦ瘡涓涓鍘嬬緝寰鐜閲屽勭悊灝哄稿拰鍘嬬緝姣斾緥銆

鎬葷粨

濡傛湁綰版紡,嬈㈣繋鎸囨

java濡備綍瀹炵幇鎶婁竴涓澶у浘鐗囧帇緙╁埌鎸囧畾澶у皬鐨勫浘鐗囦笖闀垮芥瘮涓嶅彉錛

java瑕佸疄鐜版妸涓涓澶у浘鐗囧帇緙╁埌鎸囧畾澶у皬鐨勫浘鐗囦笖闀垮芥瘮涓嶅彉鍙浠ュ皾璇曚互涓嬫搷浣:

寤虹珛涓涓獮ffineTransform

AffineTransform(doublem00,doublem10,doublem01,doublem11,doublem02,doublem12)

杞鎹㈢煩闃,緙╂斁姣旇緝綆鍗(鐭╅樀鍙浠ュ共寰堝氫簨鎯,鎯沖仛鍥懼儚澶勭悊杞浠跺彲浠ョ爺絀朵笅)

[x'][m00m01m02][x][m00x+m01y+m02]

[y']=[m10m11m12][y]=[m10x+m11y+m12]

[1][001][1][1]

10鍊嶆瘮杈冮毦綆(鏍瑰彿10鍟,褰撶劧浣犳兂綆椾篃琛),9鍊嶅ソ鐐(9鐨勫紑鏂規槸3),m00涓1/3,m01涓0,m02涓0,m10涓0,m11涓1/3,m12涓0銆

鍐嶅緩涓涓獮ffineTransformOp,鎶婁笂闈㈢殑杞鎹浼犺繘鍘

AffineTransformOp(AffineTransformxform,intinterpolationType)

鏈鍚庤皟鐢ˋffineTransformOp鐨凚ufferedImagefilter(BufferedImagesrc,BufferedImagedst),src浼犲師鍥劇墖,榪斿洖鍊煎氨鏄鎯寵佺殑Image,娉ㄦ剰鏄榪斿洖鍊,涓嶆槸dst,涓嶆槑鐧藉彲浠ョ湅涓婮avaAPI

java濡備綍瀹炵幇鎶婁竴涓澶у浘鐗囧帇緙╁埌鎸囧畾澶у皬鐨勫浘鐗囦笖闀垮芥瘮涓嶅彉錛

java瑕佸疄鐜版妸涓涓澶у浘鐗囧帇緙╁埌鎸囧畾澶у皬鐨勫浘鐗囦笖闀垮芥瘮涓嶅彉鍙浠ュ皾璇曚互涓嬫搷浣:

寤虹珛涓涓獮ffineTransform

AffineTransform(doublem00,doublem10,doublem01,doublem11,doublem02,doublem12)

杞鎹㈢煩闃,緙╂斁姣旇緝綆鍗(鐭╅樀鍙浠ュ共寰堝氫簨鎯,鎯沖仛鍥懼儚澶勭悊杞浠跺彲浠ョ爺絀朵笅)

[x'][m00m01m02][x][m00x+m01y+m02]

[y']=[m10m11m12][y]=[m10x+m11y+m12]

[1][001][1][1]

10鍊嶆瘮杈冮毦綆(鏍瑰彿10鍟,褰撶劧浣犳兂綆椾篃琛),9鍊嶅ソ鐐(9鐨勫紑鏂規槸3),m00涓1/3,m01涓0,m02涓0,m10涓0,m11涓1/3,m12涓0銆

鍐嶅緩涓涓獮ffineTransformOp,鎶婁笂闈㈢殑杞鎹浼犺繘鍘

AffineTransformOp(AffineTransformxform,intinterpolationType)

鏈鍚庤皟鐢ˋffineTransformOp鐨凚ufferedImagefilter(BufferedImagesrc,BufferedImagedst),src浼犲師鍥劇墖,榪斿洖鍊煎氨鏄鎯寵佺殑Image,娉ㄦ剰鏄榪斿洖鍊,涓嶆槸dst,涓嶆槑鐧藉彲浠ョ湅涓婮avaAPI

閱讀全文

與壓縮上傳圖片java相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:417
個人所得稅java 瀏覽:756
多餘的伺服器滑道還有什麼用 瀏覽:184
pdf劈開合並 瀏覽:22
不能修改的pdf 瀏覽:746
同城公眾源碼 瀏覽:482
一個伺服器2個埠怎麼映射 瀏覽:289
java字元串ascii碼 瀏覽:72
台灣雲伺服器怎麼租伺服器 瀏覽:469
旅遊手機網站源碼 瀏覽:326
android關聯表 瀏覽:939
安卓導航無聲音怎麼維修 瀏覽:329
app怎麼裝視頻 瀏覽:429
安卓系統下的軟體怎麼移到桌面 瀏覽:90
windows拷貝到linux 瀏覽:765
mdr軟體解壓和別人不一樣 瀏覽:897
單片機串列通信有什麼好處 瀏覽:334
游戲開發程序員書籍 瀏覽:856
pdf中圖片修改 瀏覽:282
匯編編譯後 瀏覽:485