Este artículo describe la definición y el uso de clases de escala de alta calidad implementadas en Java. Compártelo para su referencia, como sigue:
Encontré muchos de ellos pero no eran ideales, y finalmente encontré a alguien que los escribió de un extranjero. Tengo que admitir que lo que escribió el extranjero es realmente increíble.
paquete com.test; import com.sun.image.codec.jpeg.jpegimageEncoder; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegencodeparam; import javax.swing.*; import java.io.file; java.io.ioException; import java.awt.*; import java.awt.image.bufferedImage; import java.awt.image.kernel; import java.awt.image.convolveOp; public class ImageUtil {public static void RESISE (archivo original, archivo RESEDFILE, int NewWidth, Float CALALITY) SOLICIONES) SOLICITA). 1) {tirar nueva ilegalargumentException ("La calidad tiene que ser entre 0 y 1"); } Imageicon II = new Imageicon (originalFile.getCanonicalPath ()); Imagen i = ii.getImage (); Imagen RESEDIMAGE = NULL; int iWidth = i.getWidth (nulo); int iheight = i.getheight (nulo); if (iwidth> iHeight) {reseDImage = i.getScaledInStance (newWidth, (newWidth * iheight) / iWidth, image.scale_smooth); } else {RESEDIMAGE = i.GETSCALEDINSTANCE ((newWidth * iWidth) / iHEight, newWidth, image.scale_smooth); } // Este código asegura que se carguen todos los píxeles de la imagen. Imagen temp = new ImageIcon (REDEDIMAGE) .GetImage (); // Crear la imagen buffed. BufferedImage BufferedImage = new BufferedImage (temp.getWidth (nulo), temp.getheight (null), bufferedimage.type_int_rgb); // Copiar la imagen a la imagen buffada. Gráficos g = bufferedimage.createGraphics (); // Borrar fondo y pintar la imagen. G.SetColor (color.white); G.Fillrect (0, 0, temp.getWidth (null), temp.getheight (null)); G.DrawImage (temp, 0, 0, nulo); G.Dispose (); // ablandar. FLOAT SoftenFactor = 0.05F; Float [] SoftenArray = {0, SoftenFactor, 0, SoftenFactor, 1 - (SoftenFactor * 4), SoftenFactor, 0, SoftenFactor, 0}; Núcleo núcleo = nuevo kernel (3, 3, softenArray); Convolveop cop = new Convolveop (kernel, convolveop.edge_no_op, null); BufferedImage = Cop.Filter (BufferedImage, NULL); // Escribe el JPEG en un archivo. FileOutputStream out = new FileOutputStream (RESEDEDFILE); // codifica la imagen como un flujo de datos JPEG jpegimageEncoder coder = jpegcodec.createjpegencoder (out); JPEGENCODEPARAM PARAM = Encoder .getDefaultJpegencodeparam (BufferedImage); param.setQuality (calidad, verdadero); encoder.setJpegencodeparam (param); Encoder.encode (BufferedImage); } // Example usage public static void main(String[] args) throws IOException {// File originalImage = new File("C://11.jpg");// resize(originalImage, new File("c://11-0.jpg"),150, 0.7f);// resize(originalImage, new File("c://11-1.jpg"),150, 1f); Archivo originalimage = nuevo archivo ("c: //1207.gif"); cambiar el tamaño (originalimage, nuevo archivo ("c: //1207-0.jpg"), 150, 0.7f); cambiar el tamaño (originalimage, nuevo archivo ("c: //1207-1.jpg"), 150, 1f); }}Para obtener más contenido relacionado con Java, los lectores interesados en este sitio pueden ver los temas: "Resumen de habilidades de operación de imagen Java", "Resumen de habilidades de operación de fecha y hora de Java", "Resumen de las habilidades de nodo de operación de Java" "," Resumen de las habilidades de operación de archivos y directorio de Java "y" Tutoriales de estructura de datos de Java y algoritmo ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".". ".
Espero que este artículo sea útil para la programación Java de todos.