java处理图片-大图片输出小图片

public class DwindlePic {

    String InputDir; //输入图路径  
    String OutputDir; //输出图路径  
    String InputFileName; //输入图文件名  
    String OutputFileName; //输出图文件名  
    int OutputWidth = 80; //默认输出图片宽  
    int OutputHeight = 80; //默认输出图片高  
    int rate = 0;  
    boolean proportion = true; //是否等比缩放标记(默认为等比缩放)  
 
    public DwindlePic() {  
        //初始化变量  
        InputDir = "";  
        OutputDir = "";  
        InputFileName = "";  
        OutputFileName = "";  
        OutputWidth = 80;  
        OutputHeight = 80;  
        rate = 0;  
    }  
 
    public boolean s_pic() {  
//        BufferedImage image;  
//        String NewFileName;  
//建立输出文件对象  
        File file = new File(OutputDir + OutputFileName);  
        FileOutputStream tempout = null;  
        try {  
            tempout = new FileOutputStream(file);  
        } catch (Exception ex) {  
            System.out.println(ex.toString());  
        }  
        Image img = null;  
        Toolkit tk = Toolkit.getDefaultToolkit();  
        Applet app = new Applet();  
        MediaTracker mt = new MediaTracker(app);  
        try {  
            img = tk.getImage(InputDir + InputFileName);  
            mt.addImage(img, 0);  
            mt.waitForID(0);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
 
        if (img.getWidth(null) == -1) {  
//            System.out.println(" can't read,retry!" + "<BR>");  
            return false;  
        } else {  
            int new_w;  
            int new_h;  
            if (this.proportion == true) { //判断是否是等比缩放.  
//为等比缩放计算输出的图片宽度及高度  
                double rate1 = ((double) img.getWidth(null)) / (double) OutputWidth +  
                        0.1;  
                double rate2 = ((double) img.getHeight(null)) / (double) OutputHeight +  
                        0.1;  
                double rate = rate1 > rate2 ? rate1 : rate2;  
                new_w = (int) (((double) img.getWidth(null)) / rate);  
                new_h = (int) (((double) img.getHeight(null)) / rate);  
            } else {  
                new_w = OutputWidth; //输出的图片宽度  
                new_h = OutputHeight; //输出的图片高度  
            }  
            BufferedImage buffImg = new BufferedImage(new_w, new_h,  
                    BufferedImage.TYPE_INT_RGB);  
 
            Graphics g = buffImg.createGraphics();  
 
            g.setColor(Color.white);  
            g.fillRect(0, 0, new_w, new_h);  
 
            g.drawImage(img, 0, 0, new_w, new_h, null);  
            g.dispose();  
 
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);  
            try {  
                encoder.encode(buffImg);  
                tempout.close();  
            } catch (IOException ex) {  
                System.out.println(ex.toString());  
            }  
        }  
        return true;  
    }  
 
    public boolean s_pic(String InputDir, String OutputDir, String InputFileName,  
            String OutputFileName) {  
//输入图路径  
        this.InputDir = InputDir;  
//输出图路径  
        this.OutputDir = OutputDir;  
//输入图文件名  
        this.InputFileName = InputFileName;  
//输出图文件名  
        this.OutputFileName = OutputFileName;  
        return s_pic();  
    }  
 
    public boolean s_pic(String InputDir, String OutputDir, String InputFileName,  
            String OutputFileName, int width, int height, boolean gp) {  
//输入图路径  
        this.InputDir = InputDir;  
//输出图路径  
        this.OutputDir = OutputDir;  
//输入图文件名  
        this.InputFileName = InputFileName;  
//输出图文件名  
        this.OutputFileName = OutputFileName;  
//设置图片长宽  
        setW_H(width, height);  
//是否是等比缩放 标记  
        this.proportion = gp;  
        return s_pic();  
    }  
 
    public void setInputDir(String InputDir) {  
        this.InputDir = InputDir;  
    }  
 
    public void setOutputDir(String OutputDir) {  
        this.OutputDir = OutputDir;  
    }  
 
    public void setInputFileName(String InputFileName) {  
        this.InputFileName = InputFileName;  
    }  
 
    public void setOutputFileName(String OutputFileName) {  
        this.OutputFileName = OutputFileName;  
    }  
 
    public void setOutputWidth(int OutputWidth) {  
        this.OutputWidth = OutputWidth;  
    }  
 
    public void setOutputHeight(int OutputHeight) {  
        this.OutputHeight = OutputHeight;  
    }  
 
    public void setW_H(int width, int height) {  
        this.OutputWidth = width;  
        this.OutputHeight = height;  
    }  
    
    public static void main(String[] args) {
         //s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)  
        DwindlePic mypic = new DwindlePic();  
        System.out.println(  
                mypic.s_pic("c:/",  
                "d:/",  
                "2.jpg", "bc.jpg", 120, 80, true));  
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值