JAVA实现对图片的剪切

package com.erzhan.hibernate.Test;
import java.awt.Rectangle;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.util.Iterator;  
import javax.imageio.ImageIO;  
import javax.imageio.ImageReadParam;  
import javax.imageio.ImageReader;  
import javax.imageio.stream.ImageInputStream;  
public class OperateImage {  
    // ===源图片路径名称如:c:\1.jpg  
    private String srcpath;  
    // ===剪切图片存放路径名称。如:c:\2.jpg  
    private String subpath;  
    // ===剪切点x坐标  
    private int x;  
    private int y;  
    // ===剪切点宽度  
    private int width;  
    private int height;  
  
    public OperateImage() {  
    }  
  
    public OperateImage(int x, int y, int width, int height) {  
        this.x = x;  
        this.y = y;  
        this.width = width;  
        this.height = height;  
    }  
  
     
    public void cut() throws IOException {  
        FileInputStream is = null;  
        ImageInputStream iis = null;  
        try {  
            // 读取图片文件  
            is = new FileInputStream(srcpath);  
             
            Iterator it = ImageIO  
                    .getImageReadersByFormatName("jpg");  
            ImageReader reader = it.next();  
            // 获取图片流  
            iis = ImageIO.createImageInputStream(is);  
             
            reader.setInput(iis, true);  
             
            ImageReadParam param = reader.getDefaultReadParam();  
             
            Rectangle rect = new Rectangle(x, y, width, height);  
            // 提供一个 BufferedImage,将其用作解码像素数据的目标。  
            param.setSourceRegion(rect);  
             
            BufferedImage bi = reader.read(0, param);  
            // 保存新图片  
            ImageIO.write(bi, "jpg", new File(subpath));  
        } finally {  
            if (is != null)  
                is.close();  
            if (iis != null)  
                iis.close();  
        }  
    }  
  
    public int getHeight() {  
        return height;  
    }  
  
    public void setHeight(int height) {  
        this.height = height;  
    }  
  
    public String getSrcpath() {  
        return srcpath;  
    }  
  
    public void setSrcpath(String srcpath) {  
        this.srcpath = srcpath;  
    }  
  
    public String getSubpath() {  
        return subpath;  
    }  
  
    public void setSubpath(String subpath) {  
        this.subpath = subpath;  
    }  
  
    public int getWidth() {  
        return width;  
    }  
  
    public void setWidth(int width) {  
        this.width = width;  
    }  
  
    public int getX() {  
        return x;  
    }  
  
    public void setX(int x) {  
        this.x = x;  
    }  
  
    public int getY() {  
        return y;  
    }  
  
    public void setY(int y) {  
        this.y = y;  
    }  
  
    public static void main(String[] args) throws Exception {  
        String name = "D:\\1.jpg";  
        OperateImage o = new OperateImage(60, 60, 160, 160);  
        o.setSrcpath(name);  
        o.setSubpath("E:\\2.jpg");  
        o.cut();  
    }  
}  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值