Cet article est une classe de traitement d'image Java encapsulée par l'auteur en combinaison avec certaines informations sur Internet, en soutenant la mise à l'échelle, la rotation et la mosaïcité des images.
Sans plus tarder, le code:
Package de transfert; Importer java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image; importer java.awt.geom.affinetransform; import java.awt.image.affinetransformop; import java.awt.image.buffereddimage; import java.file; import; Javax.imageio.imageio; / ** * Classe de traitement d'image. * * @author nagsh * * / public class iMageDeal {String openUrl; // L'image d'origine Open Path String SaveUrl; // la nouvelle image de la chaîne de path de sauvegarde Savename; // le nouveau suffixe de chaîne de nom d'image; // Le nouveau type d'image prend uniquement en charge GIF, jpg, png public imageal (String openUrl, String SaveUrl, String Savename, String suffixe) {this.openUrl = openUrl; this.savename = Savename; this.saveUrl = SaveUrl; this.Suffix = suffixe; } / ** * Échelle d'image. * * @param largeur * largeur requise * @param hauteur * hauteur requise * @throws exception * / public void zoom (int largeur, int hauteur) exception {double sx = 0,0; double sy = 0,0; Fichier fichier = nouveau fichier (openUrl); if (! file.isfile ()) {lancer une nouvelle exception ("iMageDeal >>>" + File + "pas un fichier image!"); } BufferedImage Bi = ImageIo.Read (fichier); // Lire l'image // Calculez le rapport de mise à l'échelle de l'axe des axes X-IF l'échelle à échelle égale est requise, assurez-vous que la largeur et la hauteur des paramètres sont des changements à échelle égale avant l'appel = (double) largeur / bi.getWidth (); sy = (double) hauteur / bi.getheight (); AffineTransFormop OP = new AffineTransFormop (AffineTransform.getScaleInstance (SX, SY), NULL); Fichier SF = nouveau fichier (SaveUrl, Savename + "." + Suffixe); Image ZoomImage = op.filter (BI, null); essayez {imageo.write ((bufferedImage) ZoomImage, suffixe, sf); // Enregistrer l'image} catch (exception e) {e.printStackTrace (); }} / ** * Rotation * * @param degré * Angle de rotation * @throws exception * / public void spin (int degré) lève une exception {int swidth = 0; // largeur après rotation int sheight = 0; // Hauteur après rotation int x; // coordonnée horizontale d'origine int y; // Fichier de coordonnées verticales d'origine = nouveau fichier (openUrl); if (! file.isfile ()) {lancer une nouvelle exception ("iMageDeal >>>" + File + "pas un fichier image!"); } BufferedImage Bi = ImageIo.Read (fichier); // Lire l'image // Processus Angle-Détermine rotation degré = degré% 360; if (degré <0) degré = 360 + degré; // convertir l'angle entre 0-360 degrés Double Thêta = Math.Toradians (degré); // convertir l'angle en radians // déterminer la largeur et la hauteur après rotation if (degré == 180 || degré == 0 || degré == 360) {Swidth = Bi.getWidth (); sheight = bi.getheight (); } else if (degré == 90 || degré == 270) {sheight = bi.getWidth (); Swidth = bi.getheight (); } else {swidth = (int) (math.sqrt (bi.getWidth () * bi.getWidth () + bi.getheight () * bi.getheight ())); sheight = (int) (math.sqrt (bi.getWidth () * bi.getWidth () + bi.getheight ())); } x = (swidth / 2) - (bi.getWidth () / 2); // déterminer la coordonnée d'origine y = (shight / 2) - (bi.getheight () / 2); BufferedImage SpinImage = new BufferedImage (Swidth, Sheight, bi.getType ()); // Définissez la couleur d'arrière-plan de l'image Graphics2d gs = (graphics2d) spinImage.getGraphics (); gs.setColor (color.white); gs.Fillrect (0, 0, Swidth, sheight); // dessine l'arrière-plan de l'image rotative dans une couleur donnée affinier-forme à = new AffineTransform (); at.rotate (thêta, swidth / 2, sheight / 2); // rotation image at.translate (x, y); AffineTransformOp Op = new AffineTransFormop (AT, affinetRansformop.type_bicucuc); SpinImage = op.filter (Bi, SpinImage); Fichier SF = nouveau fichier (SaveUrl, Savename + "." + Suffixe); ImageIo.Write (SpinImage, suffixe, SF); // Enregistrez l'image} / ** * Mosaicization. * @param taille de la taille de la mosaïque, c'est-à-dire la longueur et la largeur de chaque rectangle * @return * @throws exception * / public boolean mosaic (int size) lève exception {file file = new File (openUrl); if (! file.isfile ()) {lancer une nouvelle exception ("iMageDeal >>>" + File + "pas un fichier image!"); } BufferedImage Bi = ImageIo.Read (fichier); // Lire l'image BufferedImage SpinImage = new BufferedImage (bi.getWidth (), bi.getheight (), bi.type_int_rgb); if (bi.getWidth () <size || bi.getheight () <size || Size <= 0) {// La taille de la grille de mosaïque est trop grande ou trop petit rendement faux; } int xcount = 0; // Le nombre de direction est dessiné dans yCount = 0; // Le nombre de direction est dessiné dans yCount if (bi.getWidth ()% size == 0) {xcount = bi.getWidth () / size; } else {xcount = bi.getWidth () / size + 1; } if (bi.getheight ()% size == 0) {yCount = bi.getheight () / size; } else {yCount = bi.getheight () / size + 1; } int x = 0; // coordonne int y = 0; // dessiner des mosaïques (dessiner des rectangles et des couleurs de remplissage) graphiques gs = spinImage.getGraphics (); for (int i = 0; i <xcount; i ++) {for (int j = 0; j <ycount; j ++) {// Mosaic rectangle size int mwidth = size; int mheight = taille; if (i == xcount-1) {// Le dernier dans la direction horizontale est spécial et peut ne pas être suffisant pour une taille mwidth = bi.getWidth () - x; } if (j == yCount-1) {// de même mheight = bi.getheight () - y; } // La valeur RVB de la couleur rectangle prend le pixel central int CenterX = x; INT CENTERY = Y; if (mwidth% 2 == 0) {CenterX + = mWidth / 2; } else {CenterX + = (mWidth - 1) / 2; } if (mheight% 2 == 0) {Centery + = mheight / 2; } else {Centery + = (mheight - 1) / 2; } Couleur couleur = nouvelle couleur (bi.getrgb (CenterX, Centery)); gs.setColor (couleur); gs.fillrect (x, y, mwidth, mheight); y = y + taille; // calculer les coordonnées y du rectangle suivant} y = 0; // restaurer les coordonnées y x = x + taille; // calculer les coordonnées x} gs.dispose (); Fichier SF = nouveau fichier (SaveUrl, Savename + "." + Suffixe); ImageIo.Write (SpinImage, suffixe, SF); // Enregistrer l'image return true; } public static void main (String [] args) lève une exception {imageal iMageal = new iMageDeal ("e: //1.jpg", "e: //", "2", "jpg"); // Test Scaling / * iMageDeal.zoom (200, 300); * / // Test Rotation / * iMageDeal.spin (90); * / // Tester Mosaic / * iMagealal.mosaic (4); * /}} Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.