코드 사본은 다음과 같습니다.
/**
*
*/
패키지 com.b510;
import java.awt.rectangle;
java.awt.image.bufferedimage import;
import java.io.file;
import java.io.fileInputStream;
import java.io.ioexception;
import java.util.date;
import java.util.iterator;
import javax.imageio.imageio;
import javax.imageio.imagereadparam;
import javax.imageio.imagereader;
import javax.imageio.stream.imageinputstream;
/**
* @Date 2012-11-26
* @Author XHW
*
*/
공개 클래스 imagecut {
/**
* 소스 이미지 경로 이름은 다음과 같습니다. c : /1.jpg
*/
개인 문자열 srcpath = "e : /poool.jpg";
/**
* 클리핑 이미지 저장 경로의 이름
*/
개인 문자열 subpath = "e :/pool_end";
/**
* JPG 사진 형식
*/
개인 정적 최종 문자열 이미지 _form_of_jpg = "jpg";
/**
* PNG 사진 형식
*/
개인 정적 최종 문자열 이미지 _form_of_png = "png";
/**
* x 전단 지점의 좌표
*/
개인 int x;
/**
* 컷 포인트 Y 좌표
*/
개인 in y;
/**
* 전단점 너비
*/
비공개 int 너비;
/**
* 전단 점 높이
*/
개인 INT 높이;
public imagecut () {
}
public imagecut (int x, int y, int 너비, int 높이) {
this.x = x;
this.y = y;
this.width = 너비;
this.height = 높이;
}
public static void main (string [] args)은 예외 {
imagecut imagecut = 새로운 imagecut (134, 0, 366, 366);
imageCut.cut (imageCut.getSrcPath (), imageCut.getSubPath ());
}
/**
* 지정된 형식을 해독 할 수 있다고 주장하는 현재 등록 된 모든 이미지 방지기가 포함 된 반복자를 반환합니다.
* 매개 변수 : FormatName- 비공식 형식 이름 (예 : "jpeg"또는 "tiff") 등.
*
* @param postfix
* 파일 접미사 이름
* @반품
*/
공개 반복자 <ImageReader> getImagerEadersByFormatName (String PostFix) {
스위치 (postfix) {
case image_form_of_jpg :
return imageio.getImagerEadersByFormatName (image_form_of_jpg);
case image_form_of_png :
return imageio.getImagerEadersByFormatName (image_form_of_png);
기본:
return imageio.getImagerEadersByFormatName (image_form_of_jpg);
}
}
/**
* 자르기 후 이미지를 자르고 새 이미지를 저장하십시오.
* @param srcpath 소스 이미지 경로
* @param subpath 컷 이미지 저장 경로
* @throws ioexception
*/
public void cut (string srcpath, String subpath) IoException {
FileInputStream은 = null;
imageInputStream iis = null;
노력하다 {
// 이미지 파일을 읽습니다
is = new FileInputStream (srcpath);
// 파일의 접미사 이름을 가져옵니다
문자열 postfix = getpostfix (srcpath);
System.out.println ( "이미지 형식은 :" + postfix);
/*
* 지정된 형식을 해독 할 수 있다고 주장하는 현재 등록 된 모든 이미지 방지기가 포함 된 반복자를 반환합니다.
* 매개 변수 : FormatName- 비공식 형식 이름 (예 : "jpeg"또는 "tiff") 등.
*/
iterator <ImageReader> it = getImagerEadersByFormatName (postfix);
imageReader reader = it.next ();
// 사진 스트림을 가져옵니다
iis = imageio.createimageInputStream (is);
/*
* <p> IIS : source.true : 앞으로만 검색하십시오.
*이 설정은 입력 소스에 포함 된 이미지가 순서대로 만 읽히는 것을 의미하며, 이는 독자가 이전에 읽은 이미지를 포함하는 데이터의 입력 부분을 캐시하지 않아도 될 수 있음을 의미합니다.
*/
reader.setInput (iis, true);
/*
* <p> 스트림을 디코딩하는 방법을 설명하는 클래스 <p>.
* 프레임의 맥락에서 스트림은 이미지 또는 이미지 그룹을 변환합니다. 특정 이미지 형식에 대한 플러그인은 이미지 에드에서 구현됩니다.
* getDefaultReadParam 메서드는 ImageEReadParam의 인스턴스를 반환합니다.
*/
imageEadparam param = reader.getDefaultReadParam ();
/*
* 이미지 작물 영역. 사각형은 조정 공간의 영역을 사각형 개체를 통해 지정합니다.
*의 왼쪽 상단 정점의 좌표 (x, y), 너비 및 높이는이 영역을 정의 할 수 있습니다.
*/
사각형 rect = 새로운 사각형 (x, y, 너비, 높이);
// 픽셀 데이터를 디코딩하기위한 대상으로 사용하기 위해 BufferedImage를 제공합니다.
param.setsourceregion (rect);
/*
* 제공된 imageEadparam을 사용하여 INDIMAGINDEX로 지정된 개체를 읽고 완전한 것으로 사용하십시오.
* BufferedImage 리턴.
*/
BufferedImage bi = reader.Read (0, param);
// 새 사진 저장
imageio.write (bi, postfix, 새 파일 (subpath + "_" + new date (). gettime () + "." + postfix);
} 마지막으로 {
if (is! = null)
is.close ();
if (iis! = null)
iis.close ();
}
}
/**
* 접미사 이름을 가진 "e : /test.pptx"와 같은 입력 filepath의 접미사 이름을 얻으십시오 : "pptx"<br>
*
* @param inputfilepath
* @반품
*/
공개 문자열 getPostFix (String inputFilePath) {
return inputfilepath.substring (inputfilepath.lastindexof ( ".") + 1);
}
public int getheight () {
리턴 높이;
}
공개 void setheight (int height) {
this.height = 높이;
}
public String getSrcPath () {
SRCPATH를 반환합니다.
}
public void setsrcpath (String srcpath) {
this.srcpath = srcpath;
}
public String getSubPath () {
반환 하위 경로;
}
public void setsubpath (String subpath) {
this.subpath = subpath;
}
public int getWidth () {
반환 너비;
}
public void setwidth (int width) {
this.width = 너비;
}
public int getx () {
반환 x;
}
public void setx (int x) {
this.x = x;
}
public int gety () {
반품 Y;
}
공개 void sety (int y) {
this.y = y;
}
}