Java logra la compresión de imágenes de alta definición sin distorsión
1. Crea miniaturas a partir de archivos de imagen.
Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.toFile(new File("thumbnail.jpg"));
En este ejemplo, se cambia el tamaño de la imagen de Origal.jpg y luego se guarda en miniatura.jpg. Además, Thumbnailator aceptará nombres de archivos como cadenas. No es necesario utilizar un objeto Archivo para especificar el archivo de imagen:
2. Crea una miniatura con rotación y marca de agua.
Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.rotate(90)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f)
.outputQuality(0.8)
.toFile(new File("image-with-watermark.jpg"));
Aunque el uso de Thumbnailator en proyectos de Android
se basa en Java, utiliza clases en java.awt.*, a las que no se puede acceder en Android. Además, el costo de importar paquetes java.awt a proyectos de Android es relativamente alto, por lo que aunque Thumbnailator es excelente , lamentablemente no se puede aplicar a dispositivos móviles.
Los marcos de compresión de imágenes más conocidos en Android son Luban y Compressor. Se dice que el algoritmo de compresión de Luban se deriva de forma inversa basándose en la compresión de imágenes de WeChat; Compressor admite la rutina de Kotlin.
Dirección de código abierto de Luban: https://github.com/Curzibn/Luban
Dirección de código abierto del compresor: https://github.com/zetbaitsu/Compressor
Compressor es fácil de usar y su API es relativamente simple. Aquí hay una breve introducción al uso simple de Compressor: