2012-01-21 34 views
11

Tôi đã tìm kiếm và tìm thấy một vài thư viện chia tỷ lệ hình ảnh cho Java. Nhưng không chắc chắn cái nào để đi với. Tôi cần tạo hình thu nhỏ từ hình ảnh do máy chủ tải lên.Thư viện chia tỷ lệ hình ảnh tốt nhất

Sẽ thật tuyệt nếu bạn có thể biết cái nào tốt và xấu.

Danh sách tôi có là:

  • JMagick
  • im4java
  • Thumbnailator
  • java-image-rộng
  • JAI

Trả lời

4

Trong các dự án riêng của tôi, tôi don không sử dụng bất kỳ thư viện cụ thể nào, chức năng được cung cấp cho Java cho phù hợp kết quả cho tôi. Nếu bạn chỉ muốn thực hiện chia tỷ lệ hình ảnh thì thư viện xử lý hình ảnh hoàn chỉnh sẽ quá nặng.

Tôi sử dụng đoạn mã được đưa ra trong http://www.mkyong.com/java/how-to-resize-an-image-in-java/ hoạt động khá tốt.

5

Java API để tạo hình thu nhỏ không đủ tốt nếu bạn cần hình thu nhỏ chất lượng cao.

Để tạo hình thu nhỏ chất lượng cao, hãy sử dụng khung như những khung bạn đã liệt kê. Tôi đã thử ImgScalr (https://github.com/thebuzzmedia/imgscalr) và Hình thu nhỏ. Với các xét nghiệm microbenchmark của tôi (không thể được sử dụng cho các kết luận chung) Thumbnailator nhanh hơn - mặc dù không nhiều, và dễ dàng hơn - đặc biệt khi tạo các hình thu nhỏ với độ trong suốt.

Tôi cũng thử dùng JMagick nhưng gặp sự cố khi biên dịch mã và thiết lập mã. Cũng là một chút lo lắng về việc chạy vào các vấn đề sau đó với một khuôn khổ có mã cơ bản được viết bằng ngôn ngữ tôi không hiểu gì cả - C.

Bạn cũng có thể tìm thấy hữu ích các cuộc thảo luận ở đây: How can I resize an image using Java?

5

Đối với tôi nhu cầu đơn giản, Thumbnailator là hoàn hảo. Lib nhỏ; API thông thạo, sạch sẽ và được ghi chép đầy đủ.

Trong trường hợp của tôi, đó chỉ là "net.coobird" % "thumbnailator" % "0.4.8" phụ thuộc và:

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

làm. Về cơ bản, nó là một trình bao bọc thân thiện trên các API Java 2D. Hữu ích cho nhu cầu cụ thể (thumbnailin '); không có đường cong học tập.


Trừ khi bạn thực sự cần phải làm một số nặng lên cao với những hình ảnh, tôi muốn được cảnh giác tùy thuộc vào một nhị phân bên ngoài (ImageMagick và giấy gói như JMagick), mà sẽ thêm phức tạp và bộ phận chuyển động vào thiết lập. Đặc biệt nếu stack của bạn là một cái gì đó giống như tôi: Scala/Java ứng dụng chạy trên Heroku. Có những thứ như heroku-buildpack-imagemagick-cedar-14, vâng, nhưng một sự phụ thuộc đơn giản đi kèm với ứng dụng là vô cùng sạch sẽ hơn.

Các vấn đề liên quan