/**<br /> * 對圖片裁剪,並把裁剪完蛋新圖片儲存 。<br /> *<br /> * @param srcpath: 被裁減的圖片完整路徑<br /> * @param tarpath: 已裁減的新圖片儲存完整的路徑<br /> * @param x: 裁減矩形地區左上頂點水平位移<br /> * @param y: 裁減矩形地區左上頂點垂直位移<br /> * @param width: 裁減矩形地區的寬度<br /> * @param height: 裁減矩形地區的高度<br /> */<br />public static void cut(String srcpath, String tarpath, int x, int y, int width, int height) {<br />try {<br />// 讀取圖片檔案<br />FileInputStream is = new FileInputStream(srcpath);</p><p>// 擷取圖片流<br />ImageInputStream iis = ImageIO.createImageInputStream(is);</p><p>// 轉化成輸出資料流<br />BufferedImage outputImage = getSubimage(ImageIO.read(iis), x, y, width, height);</p><p>// 儲存新圖片<br />if (null != outputImage) {<br />ImageIO.write(outputImage, "jpg", new File(tarpath));<br />}<br />} catch (IOException e) {<br />e.printStackTrace();<br />}<br />}</p><p>public static BufferedImage getSubimage(BufferedImage inputImage, int x, int y, int width, int height) {<br />return getSubimage(inputImage, new Rectangle(x, y, width, height));<br />}</p><p>public static BufferedImage getSubimage(BufferedImage inputImage, Rectangle rect) {<br />if (rect.x < 1 || rect.y < 1 || rect.x > inputImage.getWidth() || rect.y > inputImage.getHeight()) {<br />return null;<br />}<br />int x = Math.min(inputImage.getWidth(), rect.x);<br />int y = Math.min(inputImage.getHeight(), rect.y);<br />int width = Math.min(inputImage.getWidth() - x, rect.width);<br />int height = Math.min(inputImage.getHeight() - y, rect.height);<br />return inputImage.getSubimage(x, y, width, height);<br />}