資源描述:
《java圖片縮小算法_圖片縮小尺寸算法》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
java圖?縮?算法_圖?縮?尺?算法packageservice;importjavax.imageio.ImageIO;importjava.awt.*;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileInputStream;importjava.io.InputStream;//圖?縮?尺?算法publicclassReduceImgTest{publicstaticvoidmain(String[]args){Filesrcfile=newFile("C:/Users/85339/Desktop/wwwww/w.jpg");Filedistfile=newFile("C:/Users/85339/Desktop/wwwww/s3.png");System.out.println("壓縮前圖???:"+srcfile.length());//縮?到原來(lái)的0.2倍.,jpg格式的圖?可以轉(zhuǎn)換成png格式,直接更改存儲(chǔ)圖??件名字就好了,好簡(jiǎn)單//?標(biāo)圖?路徑,處理好的圖?存儲(chǔ)路徑,希望的圖?寬,希望的圖??,縮放?例,如果縮放?例是0,則按照希望的寬?設(shè)置圖?reduceImg("C:/Users/85339/Desktop/wwwww/w3.jpg","C:/Users/85339/Desktop/wwwww/s3.png",0,0,0.2f);System.out.println("壓縮后圖???:"+distfile.length());}//指定圖?寬度和?度和壓縮?例對(duì)圖?進(jìn)?壓縮//imgsrc源圖?地址//imgdist?標(biāo)圖?地址//widthdist壓縮后圖?的寬度//heightdist壓縮后圖?的?度//rate壓縮的?例publicstaticvoidreduceImg(Stringimgsrc,Stringimgdist,intwidthdist,intheightdist,Floatrate){try{Filesrcfile=newFile(imgsrc);//檢查圖??件是否存在if(!srcfile.exists()){System.out.println("?件不存在");}//如果?例不為空則說(shuō)明是按?例壓縮if(rate!=null&&rate>0){
1//獲得源圖的寬存數(shù)組中int[]results=getImgWidthHeight(srcfile);if(results==null||results[0]==0||results[1]==0){return;}else{//按例縮放或擴(kuò)圖,將浮點(diǎn)型轉(zhuǎn)為整型widthdist=(int)(results[0]*rate);heightdist=(int)(results[1]*rate);}}//開(kāi)始讀取件并進(jìn)壓縮Imagesrc=ImageIO.read(srcfile);//構(gòu)造個(gè)類(lèi)型為預(yù)定義圖像類(lèi)型之的BufferedImageBufferedImagetag=newBufferedImage((int)widthdist,(int)heightdist,BufferedImage.TYPE_INT_RGB);//繪制圖像getScaledInstance表創(chuàng)建此圖像的縮放版本,返回個(gè)新的縮放版本Image,按指定的width,height呈現(xiàn)圖像//Image.SCALE_SMOOTH,選擇圖像平滑度縮放速度具有更優(yōu)先級(jí)的圖像縮放算法。tag.getGraphics().drawImage(src.getScaledInstance(widthdist,heightdist,Image.SCALE_SMOOTH),0,0,null);StringformatName=imgdist.substring(imgdist.lastIndexOf(".")+1);ImageIO.write(tag,/*"GIF"*/formatName/*formatdesired*/,newFile(imgdist)/*target*/);}catch(Exceptionef){ef.printStackTrace();}}//獲取源圖的寬publicstaticint[]getImgWidthHeight(Filefile){InputStreamis=null;BufferedImagesrc=null;intresult[]={0,0};try{//獲得件輸流is=newFileInputStream(file);//從流將圖寫(xiě)緩沖圖區(qū)src=ImageIO.read(is);result[0]=src.getWidth(null);//得到源圖寬
2result[1]=src.getHeight(null);//得到源圖??is.close();//關(guān)閉輸?流}catch(Exceptionef){ef.printStackTrace();}returnresult;}}