2012-01-21 24 views
11

Przeszukałem i znalazłem kilka bibliotek skalowania obrazu dla Javy. Ale nie wiem, z którym się połączyć. Muszę wygenerować miniatury z obrazu przesłanego przez serwer.Najlepsza biblioteka skalowania obrazu

Byłoby świetnie, gdybyś mógł powiedzieć, który z nich jest dobry i zły.

Lista mam to:

  • JMagick
  • im4java
  • Thumbnailator
  • java-image-skalowanie
  • JAI

Odpowiedz

4

W moich prywatnych projektów, I don nie używa żadnej konkretnej biblioteki, funkcja zapewniona dla Javy przyzwoita wyniki dla mnie. Jeśli chcesz tylko skalować obraz, kompletna biblioteka przetwarzania obrazów byłaby zbyt duża.

Używam fragmentów kodu podanych w http://www.mkyong.com/java/how-to-resize-an-image-in-java/, który działa całkiem dobrze.

5

Interfejs API języka Java do generowania miniatur nie jest wystarczająco dobry, jeśli potrzebujesz miniatur wysokiej jakości.

Aby wygenerować wysokiej jakości miniatury, należy skorzystać z architektury podobnej do tej, którą podano na liście. Próbowałem ImgScalr (https://github.com/thebuzzmedia/imgscalr) i Thumbnailator. Z moimi testami microbenchmark (naprawdę nie można ich użyć do ogólnych wniosków) Thumbnailator jest szybszy - choć nie przez wiele, i łatwiej - zwłaszcza przy generowaniu miniatur z przezroczystością.

Próbuję też JMagick, ale mam problemy z kompilacją kodu i ustawianiem go. Również trochę zaniepokojony uruchomiony w kwestii później w ramach którego podstawowy kod jest napisany w języku, którego nie rozumiem w ogóle - C.

Można również znaleźć przydatne dyskusję tutaj: How can I resize an image using Java?

5

dla mojego proste potrzeby, Thumbnailator było idealne. Mała lib; płynne, czyste, dobrze udokumentowane API.

W moim przypadku to był tylko "net.coobird" % "thumbnailator" % "0.4.8" uzależnienia oraz:

//.. 
Thumbnails.of(originalFile) 
     .size(300, 300) 
     .toFile(thumbnailFile) 
//.. 

i zrobić. Zasadniczo jest to przyjazne opakowanie na interfejsie API Java 2D. Przydatny do określonych (miniaturowych) potrzeb; bez krzywej uczenia się.


chyba że naprawdę trzeba zrobić kilka ciężkich podnoszenia z obrazami, byłbym ostrożny w zależności od zewnętrznego binarny (ImageMagick i owijarki jak JMagick), które mogłyby dodać złożoności i ruchomych części do instalacji. Zwłaszcza jeśli twój stack jest podobny do mojego: aplikacja Scala/Java działająca na Heroku. Są takie rzeczy, jak heroku-buildpack-imagemagick-cedar-14, ale prosta zależność dostarczana z aplikacją jest nieskończenie czystsza.

Powiązane problemy