java中如何实现对已有图片的部分截图

来源:互联网 发布:男性家暴 知乎 编辑:程序博客网 时间:2024/04/30 14:53
 
———java中如何实现对已有图片的部分截图。比如我电脑上有一张800*600 大小的图片,我想要截取该图片中横向100~400,纵向200~350的区域 该怎么做啊?!!! ———————————————————————————————————————————————
 
import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Iterator; import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; public class Test95 { // 图片源 private static final String SRC_FILE = "c://1.jpg"; // 目标图片 private static final String DEST_FILE = "c://2.jpg"; public void readUsingImageReader() throws Exception{ // 取得图片读入器 Iterator readers = ImageIO.getImageReadersByFormatName("jpg"); System.out.println(readers); ImageReader reader = (ImageReader) readers.next(); System.out.println(reader); // 取得图片读入流 InputStream source = new FileInputStream(SRC_FILE); ImageInputStream iis = ImageIO.createImageInputStream(source); reader.setInput(iis, true); // 图片参数 ImageReadParam param = reader.getDefaultReadParam(); Rectangle rect = new Rectangle(100, 200, 300, 150);//100,200是左上起始位置,300就是取宽度为300的,就是从100开始取300宽,就是横向100~400,同理纵向200~350的区域就取高度150 param.setSourceRegion(rect); BufferedImage bi = reader.read(0, param); ImageIO.write(bi, "jpg", new File(DEST_FILE)); } public static void main(String[] args) throws Exception{ //main方法测试用Test95 t =new Test95(); t.readUsingImageReader(); } }