Кода -копия выглядит следующим образом:
/**
*
*/
пакет com.b510;
импортировать java.awt.rectangle;
Импорт java.awt.image.bufferedImage;
Импорт java.io.file;
импортировать java.io.fileinputstream;
импортировать java.io.ioexception;
импортировать java.util.date;
импортировать java.util.iterator;
Импорт javax.imageio.imageio;
Импорт javax.imageio.imagereadParam;
Импорт javax.imageio.imagereader;
импортировать javax.imageio.stream.imageinputstream;
/**
* @Date 2012-11-26
* @Author XHW
*
*/
открытый класс ImageCut {
/**
* Имя пути исходного изображения: c: /1.jpg
*/
частная строка srcpath = "e: /poool.jpg";
/**
* Имя пути хранения изображений
*/
частная строка subpath = "e:/pool_end";
/**
* Формат изображения JPG
*/
частная статическая конечная строка Image_form_of_jpg = "jpg";
/**
* PNG Формат изображения
*/
Приватная статическая конечная строка Image_form_of_png = "png";
/**
* x координата точки сдвига
*/
частный int x;
/**
* Координата вырезать точку Y
*/
частный инт;
/**
* Ширина точки сдвига
*/
Частная ширина INT;
/**
* Высота точки сдвига
*/
частный int height;
public ImageCut () {
}
public ImageCut (int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = ширина;
this.height = высота;
}
public static void main (string [] args) бросает исключение {
ImageCut ImageCut = new ImageCut (134, 0, 366, 366);
ImageCut.cut (ImageCut.getSrcPath (), ImageCut.getSubpath ());
}
/**
* Возвращает итератор, содержащий всех зарегистрированных в настоящее время воображаемых, которые утверждают, что они способны декодировать указанный формат.
* Параметры: FormatName - содержит неформальное имя формата.
*
* @param postfix
* Имя суффикса файла
* @возвращаться
*/
public iterator <Imagereader> getimagereadersbyformatname (String postfix) {
Switch (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 подбланка вырезать путь хранения изображений
* @Throws ioException
*/
public void Cut (String srcpath, String subpath) бросает ioException {
FileInputStream IS = null;
ImageInputStream IIS = NULL;
пытаться {
// Читать файлы изображений
is = new FileInputStream (srcpath);
// Получить имя суффикса файла
String postfix = getPostfix (srcpath);
System.out.println («Формат изображения:» + postfix);
/*
* Возвращает итератор, содержащий всех зарегистрированных в настоящее время воображаемых, которые утверждают, что они способны декодировать указанный формат.
* Параметры: FormatName - содержит неформальное имя формата.
*/
Итератор <ImageReader> it = getImagerEadersbyformatname (postfix);
Imageereader Reader = it.next ();
// Получить поток изображения
iis = imageio.createimageinputstream (is);
/*
* <p> iis: читать Source.true: Поиск только </p>.
* Этот параметр означает, что изображения, включенные в источник ввода, будут считываться только по порядку, что может позволить читателю избегать кэширования этих входных частей данных, которые содержат ранее считываемые изображения.
*/
reader.setInput (iis, true);
/*
* <p> Класс, описывающий, как декодировать потоки <p>.
* Потоки в контексте кадра конвертируют изображение или группу изображений. Плагин для определенного формата изображения будет реализован из его Imageereader
* Метод getDefaulTreadParam возвращает экземпляр ImagereAdParam.
*/
ImageReadParam param = reader.getDefultReadParam ();
/*
* Изображение площадь обрезки. Прямоугольник указывает область в пространстве координат, через объект прямоугольника
Координаты (x, y), ширина и высота верхней левой вершины * могут определить эту область.
*/
Прямоугольник прямоугольник = новый прямоугольник (x, y, ширина, высота);
// Предоставьте BufferedImage, чтобы использовать его в качестве цели для декодирования данных пикселей.
param.setsourceregion (rect);
/*
* Используйте предоставленную ImagereAdParam для чтения объекта, указанного с помощью индексации ImageIndex, и используйте его в качестве полного
* BufferedImage return.
*/
BufferedImage bi = reader.read (0, param);
// Сохранить новую картинку
Imageio.write (bi, postfix, новый файл (subpath + "_" + new date (). Gettime () + "." + Postfix));
} окончательно {
if (есть! = null)
is.close ();
if (iis! = null)
iis.close ();
}
}
/**
* Получите имя суффикса InputFilePath, например: "E: /test.pptx" с именем суффикса: "pptx" <br>
*
* @param inputfilepath
* @возвращаться
*/
public String getPostfix (String InputFilePath) {
return inputfilepath.substring (inputfilepath.lastindexof (".") + 1);
}
public int getheight () {
высота возвращения;
}
public 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;
}
public void sety (int y) {
this.y = y;
}
}