java圖片生成縮略圖_第1頁
java圖片生成縮略圖_第2頁
java圖片生成縮略圖_第3頁
java圖片生成縮略圖_第4頁
java圖片生成縮略圖_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、方法1:第一種方法比后一種生成的縮略圖要清晰Java代碼1.importjavax.imageio.ImageIO;2.importjava.awt.image.BufferedImage;3.importjava.awt.image.ColorModel;4.importjava.awt.image.WritableRaster;5.importjava.awt.*;6.importjava.awt.geom.AffineTransform;7.importjava.io.InputStream;8.importjava.io.File;9.importjava.io.FileOutputS

2、tream;10.11.publicclassTest12.publicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH)13./targetW,targetH分別表示目標(biāo)長和寬inttype=source.getType();BufferedImagetarget=null;doublesx=(double)targetW/source.getWidth();doublesy=(double)targetH/source.getHeight();18./這里想實現(xiàn)在targetW,targetH范圍內(nèi)實現(xiàn)等

3、比縮放。如果不需要等比縮放19./則將下面的ifelse語句注釋即可if(sxsy)sx=sy;targetW=(int)(sx*source.getWidth();elsesy=sx;targetH=(int)(sy*source.getHeight();if(type=BufferedImage.TYPE_CUSTOM)/handmadeColorModelcm=source.getColorModel();WritableRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);booleanalphaPremulti

4、plied=cm.isAlphaPremultiplied();target=newBufferedImage(cm,raster,alphaPremultiplied,null);elsetarget=newBufferedImage(targetW,targetH,type);Graphics2Dg=target.createGraphics();/smootherthanexlax:g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage

5、(source,AffineTransform.getScaleInstance(sx,sy);g.dispose();returntarget;publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)throwsExceptionBufferedImagesrcImage;/Stringex=fromFileStr.substring(fromFileStr.indexOf(.),fromFileStr.length();StringimgType=JPEG;if(fromF

6、ileStr.toLowerCase().endsWith(.png)imgType=PNG;/System.out.println(ex);FilesaveFile=newFile(saveToFileStr);FilefromFile=newFile(fromFileStr);srcImage=ImageIO.read(fromFile);if(width0|hight0)srcImage=resize(srcImage,width,hight);ImageIO.write(srcImage,imgType,saveFile);59.60.61.publicstaticvoidmain(S

7、tringargv)try參數(shù)1(from),參數(shù)2(to),參數(shù)3(寬),參數(shù)4(高)Test.saveImageAsJpg(E:/Document/MyPictures/3.gif,c:/6.gif,50,50);catch(Exceptione)e.printStackTrace();70.importjavax.imageio.ImageIO;importjava.awt.image.BufferedImage;importjava.awt.image.ColorModel;importjava.awt.image.WritableRaster;importjava.awt.*;imp

8、ortjava.awt.geom.AffineTransform;importjava.io.InputStream;importjava.io.File;importjava.io.FileOutputStream;publicclassTestpublicstaticBufferedImageresize(BufferedImagesource,inttargetW,inttargetH)/targetW,targetH分別表示目標(biāo)長和寬inttype=source.getType();BufferedImagetarget=null;doublesx=(double)targetW/so

9、urce.getWidth();doublesy=(double)targetH/source.getHeight();/這里想實現(xiàn)在targetW,targetH范圍內(nèi)實現(xiàn)等比縮放。如果不需要等比縮放/則將下面的ifelse語句注釋即可if(sxsy)sx=sy;targetW=(int)(sx*source.getWidth();elsesy=sx;targetH=(int)(sy*source.getHeight();if(type=BufferedImage.TYPE_CUSTOM)/handmadeColorModelcm=source.getColorModel();Writabl

10、eRasterraster=cm.createCompatibleWritableRaster(targetW,targetH);booleanalphaPremultiplied=cm.isAlphaPremultiplied();target=newBufferedImage(cm,raster,alphaPremultiplied,null);elsetarget=newBufferedImage(targetW,targetH,type);Graphics2Dg=target.createGraphics();/smootherthanexlax:g.setRenderingHint(

11、RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);g.drawRenderedImage(source,AffineTransform.getScaleInstance(sx,sy);g.dispose();returntarget;publicstaticvoidsaveImageAsJpg(StringfromFileStr,StringsaveToFileStr,intwidth,inthight)throwsExceptionBufferedImagesrcImage;/Stringex=fromFile

12、Str.substring(fromFileStr.indexOf(.),fromFileStr.length();StringimgType=JPEG;if(fromFileStr.toLowerCase().endsWith(.png)imgType=PNG;/System.out.println(ex);FilesaveFile=newFile(saveToFileStr);FilefromFile=newFile(fromFileStr);srcImage=ImageIO.read(fromFile);if(width0|hight0)srcImage=resize(srcImage,

13、width,hight);ImageIO.write(srcImage,imgType,saveFile);publicstaticvoidmain(Stringargv)try參數(shù)1(from),參數(shù)2(to),參數(shù)3(寬),參數(shù)4(高)Test.saveImageAsJpg(E:/Document/MyPictures/3.gif,c:/6.gif,50,50);catch(Exceptione)e.printStackTrace();方法2:Java代碼importjava.io.*;importjava.util.*;importcom.sun.image.codec.jpeg.*;i

14、mportjava.awt.image.*;importjava.awt.*;.*;importjava.applet.*;importjava.sql.*;9.10./縮略圖類,/本java類能將jpg圖片文件,進(jìn)行等比或非等比的大小轉(zhuǎn)換。/具體使用方法/s_pic(大圖片路徑,生成小圖片路徑,大圖片文件名,生成小圖片文名,生成小圖片寬度,生成小圖片高度,是否等比縮放(默認(rèn)為true)publicclassTesStringInputDir;/輸入圖路徑StringOutputDir;/輸出圖路徑StringInputFileName;/輸入圖文件名StringOutputFileName;

15、/輸出圖文件名intOutputWidth=80;/默認(rèn)輸出圖片寬intOutputHeight=80;/默認(rèn)輸出圖片高intrate=0;booleanproportion=true;/是否等比縮放標(biāo)記(默認(rèn)為等比縮放)23.publicTes()/初始化變量InputDir=;OutputDir=;InputFileName=;OutputFileName=;OutputWidth=80;OutputHeight=80;rate=0;34.publicvoidsetInputDir(StringInputDir)this.InputDir=InputDir;38.publicvoidset

16、OutputDir(StringOutputDir)this.OutputDir=OutputDir;42.publicvoidsetInputFileName(StringInputFileName)this.InputFileName=InputFileName;46.publicvoidsetOutputFileName(StringOutputFileName)this.OutputFileName=OutputFileName;50.publicvoidsetOutputWidth(intOutputWidth)this.OutputWidth=OutputWidth;54.publ

17、icvoidsetOutputHeight(intOutputHeight)this.OutputHeight=OutputHeight;58.publicvoidsetW_H(intwidth,intheight)this.OutputWidth=width;this.OutputHeight=height;63.publicStrings_pic()BufferedImageimage;StringNewFileName;67./建立輸出文件對象68.Filefile=newFile(OutputDir+OutputFileName);69.FileOutputStreamtempout=

18、null;trytempout=newFileOutputStream(file);catch(Exceptionex)System.out.println(ex.toString();Imageimg=null;Toolkittk=Toolkit.getDefaultToolkit();Appletapp=newApplet();MediaTrackermt=newMediaTracker(app);tryimg=tk.getImage(InputDir+InputFileName);mt.addImage(img,0);mt.waitForID(0);catch(Exceptione)e.

19、printStackTrace();86.if(img.getWidth(null)=-1)System.out.println(cantread,retry!+);returnno;elseintnew_w;intnew_h;if(portion=true)/判斷是否是等比縮放./為等比縮放計算輸出的圖片寬度及高度doublerate1=(double)img.getWidth(null)/(double)OutputWidth+0.1;doublerate2=(double)img.getHeight(null)/(double)OutputHeight+0.1;doubl

20、erate=rate1rate2?rate1:rate2;new_w=(int)(double)img.getWidth(null)/rate);new_h=(int)(double)img.getHeight(null)/rate);elsenew_w=OutputWidth;/輸出的圖片寬度new_h=OutputHeight;/輸出的圖片高度BufferedImagebuffImg=newBufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);108.109.Graphicsg=buffImg.createGraphics();110.

21、111.g.setColor(Color.white);112.g.fillRect(0,0,new_w,new_h);113.114.g.drawImage(img,0,0,new_w,new_h,null);115.g.dispose();116.JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(tempout);tryencoder.encode(buffImg);tempout.close();catch(IOExceptionex)System.out.println(ex.toString();returnok;127.publicStrings_pic(StringInputDir,StringOutputDir,StringInputFileName,StringOutputFileName)/輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論