Je sais que cette question est assez ancienne, mais à mesure que de nouveaux logiciels sortent, cela aide à obtenir de nouveaux liens vers des projets qui pourraient être intéressants pour les gens.
imgscalr est une bibliothèque de redimensionnement d'images en Java pur (et d'opérations simples comme le remplissage, le recadrage, la rotation, l'éclaircissement / la gradation, etc.) qui est douloureusement simple à utiliser - une seule classe se compose d'un ensemble d'opérations graphiques simples toutes définies comme des méthodes statiques qui vous passez une image et obtenez un résultat.
L'exemple le plus élémentaire d'utilisation de la bibliothèque ressemblerait à ceci:
BufferedImage thumbnail = Scalr.resize(image, 150);
Et une utilisation plus typique pour générer des miniatures d'images en utilisant quelques réglages de qualité et similaires pourrait ressembler à ceci:
import static org.imgscalr.Scalr.*;
public static BufferedImage createThumbnail(BufferedImage img) {
// Create quickly, then smooth and brighten it.
img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);
// Let's add a little border before we return result.
return pad(img, 4);
}
Toutes les opérations de traitement d'image utilisent le pipeline Java2D brut (qui est accéléré par le matériel sur les principales plates-formes) et n'introduiront pas la douleur d'appeler via JNI comme un conflit de bibliothèque dans votre code.
imgscalr a également été déployé dans des productions à grande échelle dans de nombreux endroits - l'inclusion de la classe AsyncScalr en fait une solution idéale pour tout traitement d'image côté serveur.
Il existe de nombreux ajustements à la qualité d'image que vous pouvez utiliser pour faire le compromis entre la vitesse et la qualité avec le mode ULTRA_QUALITY le plus élevé fournissant un résultat à l'échelle qui semble meilleur que l'implémentation Lancoz3 de GIMP.