java裁剪图片

import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;

/**
* 对图片做裁剪
*/
public class ImageUtils {
    /**
	 * 对图片做裁剪
	 * @param input 源图片
	 * @param input 保存的图片
	 * @param sourceType 源图片的类型
	 * @param savedType 保存图片的类型
	 * @param x x坐标
	 * @param y y坐标
	 * @param width 宽度
	 * @param height 高度
	*/
    public static void cutImage(InputStream input, OutputStream out, 
			String sourceType, String savedType, 
			int x, int y, int width, int height) 
			throws IOException {
        ImageInputStream imageStream = null;
        try {
			//根据指定的类型创建ImageReader
            Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(sourceType);
            ImageReader reader = readers.next();
			//把需要裁剪的图片读到内存中
            imageStream = ImageIO.createImageInputStream(input);
            reader.setInput(imageStream, true);
            ImageReadParam param = reader.getDefaultReadParam();
            Rectangle rect = new Rectangle(x, y, width, height);
            param.setSourceRegion(rect);
            BufferedImage bi = reader.read(0, param);
			//保存裁剪完的图片
            ImageIO.write(bi, savedType, out);
        } finally {
            imageStream.close();
        }
    }

    
    public static void main(String[] args) throws Exception {
        ImageUtils.cutImage(new FileInputStream("c:\\test.bmp"),
                  new FileOutputStream("c:\\1111cut.jpg"), 
				  "bmp", 
				  "jpg", 
				  0, 
				  0, 
				  100, 
				  36);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值