Este artículo es una clase de procesamiento de imágenes Java encapsulada por el autor en combinación con cierta información en Internet, lo que respalda la escala, la rotación y la mosaicización de las imágenes.
Sin más preámbulos, el código:
paquete de ofertas; import java.awt.color; import java.awt.graphics; import java.awt.graphics2d; import java.awt.image; import java.awt.geom.affinetransform; import java.awt.image.affinetRansformop; javax.imageio.imageio;/*** Clase de procesamiento de imágenes. * * @author nagsh * */public class iMageDeal {String OpenUrl; // La imagen de la imagen de la imagen original String SaveUrl; // La nueva imagen Guardar la cadena de ruta Savename; // El nuevo sufijo de cadena de nombre de imagen; // El nuevo tipo de imagen solo admite GIF, JPG, PNG public IMageGeal (String OpenUrl, String SaveUrl, String Savename, String Suffix) {this.openurl = OpenUrl; this.savename = SaveName; this.saveUrl = saveUrl; this.suffix = sufijo; } /*** Escala de imagen. * * @param ancho * Ancho requerido * @param altura * Altura requerida * @throws excepción */ public void zoom (int width, int altura) arroja excepción {doble sx = 0.0; Doble SY = 0.0; Archivo archivo = nuevo archivo (OpenUrl); if (! file.isfile ()) {tire nueva excepción ("imageLegeal >>>" + archivo + "¡no un archivo de imagen!"); } BufferedImage bi = imageIO.read (archivo); // Lea la imagen // Calcule la relación de escala del eje x-eje Y-if se requiere escala a la misma escala, asegúrese de que los parámetros de ancho y altura sean cambios a escala igual antes de llamar = (doble) ancho/ bi.getwidth (); sy = (doble) altura / bi.getheight (); Affinetransformop op = new Affinetransformop (affinetransform.getScaleInstance (SX, SY), NULL); Archivo sf = nuevo archivo (saveUrl, saveName + "." + Sufijo); Imagen zoomimage = op.filter (bi, nulo); intente {imageIO.Write ((BufferedImage) Zoomimage, sufijo, SF); // Guardar la imagen} Catch (Exception e) {E.PrintStackTrace (); }} / ** * girar * * @param grado * rotar ángulo * @throws excepción * / public void spin (int grado) lanza la excepción {int swidth = 0; // Ancho después de la rotación int Sheight = 0; // Altura después de la rotación int x; // Origin la coordenada horizontal int y; // archivo de coordenadas vertical de origen archivo = nuevo archivo (OpenUrl); if (! file.isfile ()) {tire nueva excepción ("imageLegeal >>>" + archivo + "¡no un archivo de imagen!"); } BufferedImage bi = imageIO.read (archivo); // Lea la imagen // Grado de rotación del ángulo de proceso de procesamiento = grado % 360; if (grado <0) grado = 360 + grado; // Convierta el ángulo en entre 0-360 grados Doble theta = Math.Toradians (grado); // Convertir el ángulo a radianes // Determinar el ancho y la altura después de la rotación (grado == 180 || grados == 0 || grados == 360) {swidth = bi.getwidth (); sheight = bi.getheight (); } else if (grado == 90 || grados == 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); // determinar la coordenada de origen y = (Shight / 2) - (bi.getheight () / 2); Bufferedimage spinImage = new BufferedImage (Swidth, Sheight, Bi.gettype ()); // Establecer el color de fondo de la imagen Graphics2d gs = (Graphics2d) spinImage.getGraphics (); gs.SetColor (color.white); Gs.Fillrect (0, 0, Swidth, Sheight); // Dibuja el fondo de la imagen rotada en un color Affinetransform AT = new Affinetransform (); at.rotate (theta, swidth / 2, sheight / 2); // rotar la imagen en.translate (x, y); Affinetransformop op = new Affinetransformop (at, affinetransformop.type_bicubic); spinimage = op.filter (bi, spinimage); Archivo sf = nuevo archivo (saveUrl, saveName + "." + Sufijo); ImageIO.Write (Spinimage, Sufijo, SF); // Guardar la imagen} /*** Mosaicización. * @param tamaño mosaico Tamaño, es decir, la longitud y el ancho de cada rectángulo * @return * @throws excepción */ public boolean mosaic (int tamiz) lanza la excepción {archivo de archivo = nuevo archivo (OpenUrl); if (! file.isfile ()) {tire nueva excepción ("imageLegeal >>>" + archivo + "¡no un archivo de imagen!"); } BufferedImage bi = imageIO.read (archivo); // Lea la imagen BufferedImage spinImage = new BufferedImage (bi.getwidth (), bi.getheight (), bi.type_int_rgb); if (bi.getWidth () <size || bi.getheight () <size || size <= 0) {// El tamaño de la cuadrícula de mosaico es demasiado grande o demasiado pequeño devuelve falso; } int xCount = 0; // El número de dirección se dibuja int ycount = 0; // El número de dirección se dibuja en 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; // coordina int y = 0; // dibujar mosaicos (dibujar rectángulos y rellenar colores) gráficos gs = spinimage.getgraphics (); for (int i = 0; i <xcount; i ++) {for (int j = 0; j <ycount; j ++) {// mosaico rectangle size int mwidth = size; int mHeight = tamaño; if (i == xcount-1) {// El último en la dirección horizontal es especial, y puede no ser suficiente para un tamaño mwidth = bi.getWidth ()-x; } if (j == ycount-1) {// similar mheight = bi.getheight ()-y; } // El valor RGB del color rectángulo toma el píxel 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; } Color color = nuevo color (bi.getRgb (CenterX, Centery)); gs.SetColor (color); Gs.Fillrect (X, Y, Mwidth, Mheight); y = y + tamaño; // Calcule las coordenadas y del siguiente rectángulo} y = 0; // restaurar las coordenadas y x = x + tamaño; // Calcule las coordenadas x} gs.dispose (); Archivo sf = nuevo archivo (saveUrl, saveName + "." + Sufijo); ImageIO.Write (Spinimage, Sufijo, SF); // Guardar el retorno de la imagen verdadero; } public static void main (string [] args) lanza la excepción {imageLeal imatealeal = new iMageLeal ("e: //1.jpg", "e: //", "2", "jpg"); // Escala de prueba/* imageal.zoom (200, 300); */ // Rotación de prueba/* imageLeal.spin (90); */ // Test Mosaic/*imageLeal.Mosaic (4);*/}} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.