A cópia do código é a seguinte:
/**
*
*/
pacote com.b510;
importar java.awt.rectangle;
importar java.awt.image.bufferiMage;
importar java.io.file;
importar java.io.fileInputStream;
importar java.io.ioException;
importar java.util.date;
importar java.util.iterator;
importar javax.imageio.imageio;
importar javax.imageio.imagereadparam;
importar javax.imageio.imagereader;
importar javax.imageio.stream.imageInputStream;
/**
* @Date 2012-11-26
* @Author XHW
*
*/
classe pública ImagEct {
/**
* O nome do caminho da imagem de origem é: c: /1.jpg
*/
String privada srcpath = "e: /poool.jpg";
/**
* Nome do caminho de armazenamento de imagem de recorte
*/
String privada Subpath = "e:/pool_end";
/**
* formato de imagem jpg
*/
String final estática privada image_form_of_jpg = "jpg";
/**
* formato de imagem png
*/
String final estática privada image_form_of_png = "png";
/**
* x coordenada do ponto de cisalhamento
*/
privado int x;
/**
* Corte ponto y coordenar
*/
private int y;
/**
* Largura do ponto de cisalhamento
*/
Private int Warth;
/**
* Altura do ponto de cisalhamento
*/
altura privada int;
public imagecut () {
}
Public ImagEct (int x, int y, int width, int altura) {
this.x = x;
this.y = y;
this.width = width;
this.Height = altura;
}
public static void main (string [] args) lança exceção {
ImagEct = New ImagEct (134, 0, 366, 366);
imagecut.cut (imagecut.getsrcpath (), imagececut.getSubPath ());
}
/**
* Retorna o iterador que contém todos os imagens de imagens registrados atualmente que afirmam poder decodificar o formato especificado.
* Parâmetros: FormatName - Contém o nome do formato informal.
*
* @param postfix
* Nome do sufixo do arquivo
* @retornar
*/
Public Iterator <MageReader> getImageReaderByFormatName (String postfix) {
switch (postfix) {
case image_form_of_jpg:
return imageio.getImageReadesByFormatName (image_form_of_jpg);
case image_form_of_png:
return imageio.getImageReadesByFormatName (image_form_of_png);
padrão:
return imageio.getImageReadesByFormatName (image_form_of_jpg);
}
}
/**
* Corte a imagem e salve a nova imagem após o corte.
* @param srcpath Fonte Image Path
* @Param Subpath Cut Image Storage Path
* @THOWSows IoException
*/
public void Cut (String srcpath, string subspath) lança ioexception {
FileInputStream é = null;
ImageInputStream iis = null;
tentar {
// Leia arquivos de imagem
is = new FileInputStream (srcPath);
// Obtenha o nome do sufixo do arquivo
String postfix = getPostfix (srcpath);
System.out.println ("O formato da imagem é:" + postfix);
/*
* Retorna o iterador que contém todos os imagens de imagens registrados atualmente que afirmam poder decodificar o formato especificado.
* Parâmetros: FormatName - Contém o nome do formato informal.
*/
Iterator <ageReader> it = getImageReaderByformatName (postfix);
ImageReader Reader = it.Next ();
// Obtenha o fluxo de fotos
iis = imageio.createImageInputStream (IS);
/*
* <p> IIS: Leia a fonte.TRUE: Pesquise apenas </p>.
* Essa configuração significa que as imagens incluídas na fonte de entrada serão leituras apenas em ordem, o que pode permitir que o leitor evite o cache das partes de entrada de dados que contêm imagens de leitura anteriormente.
*/
leitor.setInput (iis, true);
/*
* Classe <p> Descrevendo como decodificar fluxos <p>.
* Fluxos no contexto do quadro converte uma imagem ou um grupo de imagens. O plugin para um formato de imagem específico será implementado de seu imagereader
* O método getDefaultreadparam retorna uma instância do ImageReadParam.
*/
ImageReadParam param = reader.getDefaultreadParam ();
/*
* Área da colheita de imagem. Retângulo especifica uma área no espaço de coordenadas, através do objeto retângulo
As coordenadas (x, y), largura e altura do vértice superior esquerdo de * podem definir esta área.
*/
Retângulo ret = novo retângulo (x, y, largura, altura);
// Forneça um bufferImage para usá -lo como destino para decodificar dados de pixels.
param.SetSourCeregion (Rect);
/*
* Use o ImageReadParam fornecido para ler o objeto especificado pela indexação do ImageIndex e use -o como um completo
* Retorno de BufferImage.
*/
BufferImage bi = leitor.read (0, param);
// Salvar uma nova foto
Imageio.write (bi, postfix, novo arquivo (subpath + "_" + new date (). Gettime () + "." + Postfix));
} finalmente {
se (é! = nulo)
is.close ();
se (iis! = nulo)
iis.close ();
}
}
/**
* Obtenha o nome do sufixo de InputFilePath, como: "e: /test.pptx" com o nome do sufixo: "pptx" <br>
*
* @param inputFilePath
* @retornar
*/
public String getPostfix (String inputFilePath) {
retornar inputFilePath.substring (inputFilePath.LastIndexOf (".") + 1);
}
public int getHeight () {
altura de retorno;
}
public void sethight (int altura) {
this.Height = altura;
}
public String getSrcPath () {
retornar srcpath;
}
public void SetsrcPath (String SRCPath) {
this.srcpath = srcpath;
}
public String getSubPath () {
retornar subpath;
}
public void SetsubPath (String Subpath) {
this.subpath = subpath;
}
public int getWidth () {
largura de retorno;
}
public void SetWidth (int width) {
this.width = width;
}
public int getx () {
retornar x;
}
public void setx (int x) {
this.x = x;
}
public int gety () {
retornar y;
}
public void Sety (int y) {
this.y = y;
}
}