La copia del código es la siguiente:
/**
*
*/
paquete com.b510;
import java.awt.rectangle;
import java.awt.image.bufferedImage;
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
*
*/
clase pública imageCut {
/**
* El nombre de la ruta de la imagen de origen es: c: /1.jpg
*/
cadena privada srcpath = "e: /pool.jpg";
/**
* Nombre de la ruta de almacenamiento de imágenes de recorte.
*/
String private subpath = "e:/piscal_end";
/**
* Formato de imagen JPG
*/
cadena final estática privada image_form_of_jpg = "jpg";
/**
* Formato de imagen PNG
*/
cadena final estática privada Image_Form_of_png = "Png";
/**
* x coordenada de punto de corte
*/
privado int x;
/**
* Corte del punto y coordenada
*/
privado int y;
/**
* Ancho del punto de corte
*/
Ancho privado int;
/**
* Altura del punto de corte
*/
Altura privada int;
public imageCut () {
}
Public imageCut (int x, int y, int ancho, int altura) {
this.x = x;
this.y = y;
this.width = ancho;
this.Height = altura;
}
public static void main (string [] args) lanza la excepción {
ImageCut imageCut = new imageCut (134, 0, 366, 366);
imageCut.cut (imageCut.getSrcpath (), imageCut.getSubpath ());
}
/**
* Devuelve el iterador que contiene todos los imágenes de imágenes registradas actualmente que afirman poder decodificar el formato especificado.
* Parámetros: FormatName: contiene nombre de formato informal.
*
* @param Postfix
* Nombre del sufijo del archivo
* @devolver
*/
Public Iterator <IricaReader> getImageReadersByFormatName (String Postfix) {
Switch (Postfix) {
Caso image_form_of_jpg:
return imageIO.getImageReadersByFormatName (image_form_of_jpg);
Caso image_form_of_png:
return imageIO.GetImageReadersByFormatName (image_form_of_png);
por defecto:
return imageIO.getImageReadersByFormatName (image_form_of_jpg);
}
}
/**
* Recorte la imagen y guarde la nueva imagen después del recorte.
* @param srcpath ruta de imagen de origen
* @param subpath corta la ruta de almacenamiento de imágenes
* @throws ioexception
*/
Public void Cut (String srcpath, String Subpath) lanza ioexception {
FileInputStream is = null;
ImageInputStream iis = null;
intentar {
// leer archivos de imagen
IS = nuevo FileInputStream (SRCPATH);
// Obtener el nombre de sufijo del archivo
Cadena postfix = getPostfix (srcpath);
System.out.println ("El formato de imagen es:" + postfix);
/*
* Devuelve el iterador que contiene todos los imágenes de imágenes registradas actualmente que afirman poder decodificar el formato especificado.
* Parámetros: FormatName: contiene nombre de formato informal.
*/
Iterator <IrageReader> it = getImageReadersByFormatName (Postfix);
ImageReader lector = it.next ();
// consigue la transmisión de la imagen
iis = imageIO.CreateImageInputStream (is);
/*
* <P> IIS: Leer Source.true: Busque solamente </p>.
* Esta configuración significa que las imágenes incluidas en la fuente de entrada se leerán solo en orden, lo que puede permitir al lector evitar almacenar en caché las partes de datos de datos que contienen imágenes de lectura previamente.
*/
lector.setInput (IIS, verdadero);
/*
* <p> Clase que describe cómo decodificar las secuencias <p>.
* Las transmisiones en el contexto del marco convierten una imagen o un grupo de imágenes. El complemento para un formato de imagen específico se implementará desde su ImageReader
* El método GetDefaulTreadParam devuelve una instancia de ImageReadParam.
*/
ImagereadParam param = lector.getDefaultreadParam ();
/*
* Área de cultivo de imágenes. Rectángulo especifica un área en el espacio de coordenadas, a través del objeto rectángulo
Las coordenadas (x, y), el ancho y la altura del vértice superior izquierdo de * pueden definir esta área.
*/
Rectángulo rect = nuevo rectángulo (x, y, ancho, altura);
// Proporcione una BufferedImage para usarlo como objetivo para decodificar los datos de píxeles.
param.setSourCeregion (RECT);
/*
* Use el ImageReadParam proporcionado para leer el objeto especificado mediante la indexación de ImageIndex y úselo como un completo
* BufferedImage Return.
*/
BufferedImage bi = lector.read (0, param);
// Guardar una nueva imagen
ImageIO.Write (BI, Postfix, nuevo archivo (Subpath + "_" + New Date (). GetTime () + "." + Postfix));
} finalmente {
if (is! = null)
is.close ();
if (iis! = nulo)
iis.close ();
}
}
/**
* Obtenga el nombre de sufijo de InputFilepath, como: "e: /test.pptx" con el nombre del sufijo: "pptx" <br>
*
* @param inputFilepath
* @devolver
*/
public String getPostfix (String InputFilePath) {
return inputFilePath.substring (inputFilePath.lastIndexOf (".") + 1);
}
public int getheight () {
altura de retorno;
}
public void setheight (int altura) {
this.Height = altura;
}
Cadena pública getSrcpath () {
regresar srcpath;
}
public void setSrcpath (String srcpath) {
this.srcpath = srcpath;
}
Cadena pública getSubpath () {
Subpath de regreso;
}
public void setSubpath (String Subpath) {
this.subpath = subpath;
}
public int getWidth () {
Ancho de retorno;
}
public void setwidth (int ancho) {
this.width = ancho;
}
public int getx () {
regresar x;
}
public void setX (int x) {
this.x = x;
}
public int gety () {
regresar y;
}
public void sety (int y) {
this.y = y;
}
}