Wiem, że to pytanie jest dość stare, ale kiedy pojawia się nowe oprogramowanie, pomaga uzyskać nowe linki do projektów, które mogą być interesujące dla ludzi.
imgscalr to biblioteka do skalowania obrazów w czystej Javie (i proste operacje, takie jak wypełnianie, kadrowanie, obracanie, rozjaśnianie / ściemnianie itp.) Biblioteka, która jest niezwykle prosta w użyciu - pojedyncza klasa składa się z zestawu prostych operacji graficznych zdefiniowanych jako statyczne metody, które przekazujesz obraz i odzyskujesz wynik.
Najbardziej podstawowy przykład użycia biblioteki wygląda następująco:
BufferedImage thumbnail = Scalr.resize(image, 150);
A bardziej typowe użycie do generowania miniatur obrazów przy użyciu kilku poprawek jakości i tym podobnych może wyglądać następująco:
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);
}
Wszystkie operacje przetwarzania obrazu wykorzystują nieprzetworzony potok Java2D (który jest przyspieszany sprzętowo na głównych platformach) i nie wprowadzą bólu wywołania za pomocą JNI, podobnie jak rywalizacja o bibliotekę w kodzie.
Imgscalr został również wdrożony w dużych produkcjach w kilku miejscach - włączenie klasy AsyncScalr sprawia, że jest to idealne narzędzie do przetwarzania obrazu po stronie serwera.
Istnieje wiele drobnych poprawek jakości obrazu, których możesz użyć, aby dokonać kompromisu między szybkością a jakością, dzięki najwyższemu trybowi ULTRA_QUALITY, który zapewnia skalowany wynik, który wygląda lepiej niż implementacja Lancoz3 GIMP.