JAVA上傳圖片的縮放處理 – JAVA編程語言程序開發技術文章

圖片上傳到服務器後,會根據情況將圖片縮小成一個圖標,我們可以利用java強大的圖形處理功能,對上傳的圖片進行縮放處理。
 
  下面的程序使用jdk1.4中最新的ImageIO對圖片進行讀寫。使用AffineTransform對圖片進行縮放。
 
  import java.io.File;
 
  import java.awt.image.BufferedImage;
 
  import java.awt.Image;
 
  import java.awt.image.AffineTransformOp;
 
  import javax.imageio.ImageIO;
 
  import java.awt.geom.AffineTransform;
 
  public class UploadImg{
 
  /**
 
  * @param fromdir 圖片的原始目錄
 
  * @param todir 處理後的圖片存放目錄
 
  * @param imgfile 原始圖片
 
  * @param sysimgfile 處理後的圖片文件名前綴
 
  *
 
  */ www.aiwalls.com
 
  ……
 
  public boolean CreateThumbnail() throws Exception
 
  {
 
  //ext是圖片的格式gif JPG 或png
 
  String ext="";
 
  double Ratio=0.0;
 
  File F = new File(fromdir,imgfile);
 
  if (!F.isFile())
 
  throw new Exception(F+" is not image file error in CreateThumbnail!");
 
  //首先判斷上傳的圖片是gif還是JPG ImageIO隻能將gif轉換為png
 
  if (isJpg(imgfile)){
 
  ext="jpg";
 
  }else{
 
  ext="png";
 
  }
 
  File ThF = new File(todir,sysimgfile+"."+ext);
 
  BufferedImage Bi = ImageIO.read(F);
 
  //假設圖片寬 高 最大為120 120
 
  Image Itemp = Bi.getScaledInstance (120,120,Bi.SCALE_SMOOTH);
 
  if ((Bi.getHeight()>120) || (Bi.getWidth()>120)){
 
  if (Bi.getHeight()>Bi.getWidth())
 
  Ratio = 120.0/Bi.getHeight();
 
  else
 
  Ratio = 120.0/Bi.getWidth();
 
  }
 
  AffineTransformOp op = new AffineTransformOp(AffineTransform.getScaleInstance(Ratio,Ratio),null);
 
  Itemp = op.filter(Bi,null);
 
  try {
 
  ImageIO.write((BufferedImage)Itemp,ext,ThF);
 
  }catch (Exception ex) {
 
  throw new Exception(" ImageIo.write error in CreatThum.:"+ex.getMessage());
 
  }
 
  return (true);
 
  }
 
  }
 
  該程序使用瞭Java 的AWT,在linux下運行可能報錯,有兩種解決方式:
 
  (1) jdk1.4以前版本:需要安裝XFree86和XFree86-Xvfb ,加入export DISPLAY=hostdomain:0.0
 
  (2) jdk 1.4以後版本,在執行命令java 加入參數-Djava.awt.headless=true,表示這是一個沒有鍵盤 沒有顯示器的無頭服務器,意稱機房托管的服務器。
 
摘自https://blog.csdn.net/linux_loajie/article/details/7230995

發佈留言