La copie de code est la suivante:
/ **
*
* /
package com.b510;
import java.awt.rectangle;
Importer java.awt.image.bufferedImage;
Importer java.io.file;
import java.io.fileInputStream;
Importer java.io.ioException;
Importer java.util.date;
Importer java.util.iterator;
import javax.imageio.imageio;
Importer javax.imageio.imageReadParam;
import javax.imageio.imageReader;
Importer javax.imageio.stream.imageInputStream;
/ **
* @Date 2012-11-26
* @author xhw
*
* /
classe publique ImageEcut {
/ **
* Le nom du chemin d'image source est: c: /1.jpg
* /
chaîne privée srcpath = "e: /poool.jpg";
/ **
* Nom du chemin de stockage de l'image de coupure.
* /
String privé subpath = "e: / pool_end";
/ **
* format d'image JPG
* /
chaîne finale statique privée image_form_of_jpg = "jpg";
/ **
* Format d'image PNG
* /
chaîne finale statique privée image_form_of_png = "png";
/ **
* x coordonnée du point de cisaillement
* /
Int x privé;
/ **
* Coordonnées du point de coupe Y
* /
privé int y;
/ **
* Largeur du point de cisaillement
* /
largeur int privée;
/ **
* Hauteur du point de cisaillement
* /
Hauteur d'int privé;
Imagecut public () {
}
Public ImageCut (int x, int y, int largeur, int hauteur) {
this.x = x;
this.y = y;
this.width = largeur;
this.height = hauteur;
}
public static void main (String [] args) lève une exception {
ImageCUT ImageCuT = New ImageCuT (134, 0, 366, 366);
ImageCUT.cut (ImageCUT.getsrcPath (), ImageCUT.getSubPath ());
}
/ **
* Renvoie un itérateur contenant tous les ImageRereders actuellement enregistrés qui prétendent pouvoir décoder le format spécifié.
* Paramètres: FormatName - contient le nom de format informel.
*
* @param postfix
* Nom du suffixe de fichier
* @retour
* /
public iterator <ImageReader> getImageRedersByFormAtName (String PostFix) {
commutateur (postfix) {
cas Image_form_of_jpg:
return imageo.getImageRedersByformatName (image_form_of_jpg);
cas Image_form_of_png:
return imageo.getImageRedersByformatName (image_form_of_png);
défaut:
return imageo.getImageRedersByformatName (image_form_of_jpg);
}
}
/ **
* Cramez l'image et enregistrez la nouvelle image après le recadrage.
* @Param SrcPath Source Image Chemin
* @Param Sub-Bat Tath de stockage d'image
* @throws ioexception
* /
public void Cut (String srcpath, string subpath) lève ioException {
FileInputStream est = null;
ImageInputStream iis = null;
essayer {
// Lire des fichiers d'image
is = new FileInputStream (srcPath);
// Obtenez le nom du suffixe du fichier
String postfix = getpostFix (srcPath);
System.out.println ("Le format d'image est:" + postfix);
/ *
* Renvoie un itérateur contenant tous les ImageRereders actuellement enregistrés qui prétendent pouvoir décoder le format spécifié.
* Paramètres: FormatName - contient le nom de format informel.
* /
Iterator <ImageReader> it = getImageRedersByFormatName (postfix);
ImageReRener Reader = it.next ();
// Obtenez le flux d'images
iis = imageo.CreateImageInputStream (IS);
/ *
* <p> iis: lisez la source.true: recherchez uniquement </p>.
* Ce paramètre signifie que les images incluses dans la source d'entrée seront lues uniquement dans l'ordre, ce qui peut permettre au lecteur d'éviter la mise en cache des parties d'entrée des données contenant des images auparavant lues.
* /
Reader.SetInput (iis, true);
/ *
* <p> Classe décrivant comment décoder les flux <p>.
* Les flux dans le contexte du cadre convertissent une image ou un groupe d'images. Le plugin pour un format d'image spécifique sera implémenté à partir de son ImageReader
* La méthode GetDefaulTreadParam renvoie une instance d'imageReadParam.
* /
ImageReadParam param = reader.getDefaulTreadParam ();
/ *
* Zone de recadrage d'image. Le rectangle spécifie une zone dans l'espace de coordonnées, à travers l'objet rectangle
Les coordonnées (x, y), la largeur et la hauteur du sommet supérieur gauche de * peuvent définir cette zone.
* /
Rectangle rect = nouveau rectangle (x, y, largeur, hauteur);
// Fournit une tampon de tampon pour l'utiliser comme cible pour décoder les données de pixels.
Param.SetSourceRegion (REct);
/ *
* Utilisez l'imageRereadParam fourni pour lire l'objet spécifié en indexant ImageIndex et utilisez-le comme complet
* Retour de tampondImage.
* /
BufferedImage Bi = Reader.read (0, param);
// Enregistrer une nouvelle image
Imageo.write (BI, postfix, nouveau fichier (sub-path + "_" + new Date (). GetTime () + "." + Postfix));
} enfin {
si (est! = null)
is.close ();
if (iis! = null)
iis.close ();
}
}
/ **
* Obtenez le nom du suffixe de l'entrée FilePath, tels que: "e: /test.pptx" avec le nom du suffixe: "pptx" <br>
*
* @param inputfilepath
* @retour
* /
public String getPostFix (String inputFilePath) {
return inputFilePath.SubString (inputFilePath.LastIndexof (".") + 1);
}
public int getheight () {
hauteur de retour;
}
public void Setheight (int hauteur) {
this.height = hauteur;
}
String public getSrcPath () {
retourner srcpath;
}
public void setsrcPath (String srcPath) {
this.srcpath = srcPath;
}
String public getSubPath () {
retour de la sous-chemin;
}
public void setSubPath (String Sub-Path) {
this.subpath = subpath;
}
public int getWidth () {
largeur de retour;
}
public void SetWidth (int largeur) {
this.width = largeur;
}
public int getx () {
retour x;
}
public void setx (int x) {
this.x = x;
}
public int gety () {
retour y;
}
public void sey (int y) {
this.y = y;
}
}