生成缩小jpg图片程序

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

import java.awt.image.BufferedImage;

import java.io.File;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.imageio.ImageIO;

import java.awt.image.AffineTransformOp;

import java.awt.geom.AffineTransform;

import java.awt.Image;

public class ZoomPicture{

public static void main(String arg[]){

String filePath = "g:/图片.jpg"; // 图片的位置

int height=50;

int width=150;

Icon icon = null;

try{

icon = getFixedBoundIcon(filePath,height,width);

}catch(Exception e){

System.out.println("exception : " + e);

}

System.out.println(" ### " + icon); //生成新图片的位置;

}

public static Icon getFixedBoundIcon(String filePath, int height, int width)

throws Exception{

double Ratio=0.0;

//缩放比例

File F = new File(filePath);

if (!F.isFile()) throw new Exception

(F+" is not image file error in getFixedBoundIcon!");

Icon ret = new ImageIcon(filePath);

BufferedImage Bi = ImageIO.read(F);

if ((Bi.getHeight()>height) || (Bi.getWidth()>width)){

if (Bi.getHeight()>Bi.getWidth()){

Ratio = (new Integer(height)).doubleValue() /Bi.getHeight();

}

else {

Ratio = (new Integer(width)).doubleValue()/Bi.getWidth();

}

int lastLength = filePath.lastIndexOf(".");

String subFilePath = filePath.substring(0,lastLength);

String fileType = filePath.substring(lastLength);

File zoomFile = new File(subFilePath+"_"+height +"_"+width+fileType);

Image Itemp = Bi.getScaledInstance (width,height,Bi.SCALE_SMOOTH);

AffineTransformOp op = new AffineTransformOp

(AffineTransform.getScaleInstance(Ratio, Ratio), null);

Itemp = op.filter(Bi, null);

try {

ImageIO.write((BufferedImage)Itemp, "jpg", zoomFile);

ret = new ImageIcon(zoomFile.getPath());

}catch (Exception ex) {

System.out.println("######## here error : " + ex);

}

}

return ret;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航