2010-02-21 32 views

Trả lời

6

Có bài viết đầy đủ về cách làm việc này khắp nơi trên net, một cái gì đó như thế này sẽ giúp bạn đi:

+1

thực sự tôi đã nói về kích thước tệp (3mb -> 200 kb), không phải là kích thước của hình ảnh. Nó có bao gồm chúng không? – Anand

+0

@Anand bạn có tìm thấy giải pháp không? –

5

Bạn có thể' t dễ dàng thay đổi kích thước hình ảnh từ một kích thước tệp khác, NHƯNG, hầu hết JPG/PNG/GIF/v.v. có xu hướng có kích thước tệp tương tự dựa trên độ phân giải của chúng. Ví dụ: JPG nén 200kb thường có kích thước 1280x960. Nếu trường hợp đó xảy ra, bạn sẽ chỉ nhắm mục tiêu tất cả các hoạt động thay đổi kích thước của bạn để kích thước các hình ảnh đích đến kích thước đó và nhận được khoảng giới hạn kích thước mà bạn muốn.

Một cách thực sự dễ dàng để thực hiện việc này là sử dụng java rất đơn giản image resizing library (giấy phép Apache 2) chỉ làm mọi thứ phù hợp với bạn. Ví dụ mã để thay đổi kích thước sẽ trông như thế này:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, 1280, 960); 

tỷ lệ hình ảnh của bạn được tôn trọng, thư viện làm cho một best-đoán tại các phương pháp đó nên sử dụng dựa trên số lượng của sự thay đổi trong hình ảnh do nhân rộng (nhanh nhất, CÂN ĐẢM hoặc CHẤT LƯỢNG) và các loại hình ảnh Java2D được hỗ trợ tốt nhất luôn được sử dụng để thực hiện mở rộng quy mô nhằm tránh vấn đề kết quả "đen" hoặc đầu ra trông thực sự khủng khiếp (ví dụ: hình ảnh GIF được dithered quá mức).

Ngoài ra, nếu bạn muốn để buộc nó để sản xuất các kết quả tìm kiếm tốt nhất có thể trong Java, cuộc gọi API sẽ trông như thế này:

BufferedImage img = ImageIO.read(...); // load image 
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY, 1280, 960); 

Thư viện sử dụng Java2D khuyến khích mở rộng quy mô gia tăng cho bạn để cung cấp cho bạn kết quả tìm kiếm tốt nhất.

Bạn có thể đọc qua tất cả các nhận xét trong thư viện (mã được viết rất nhiều) để xem tất cả các lỗi JDK khác nhau đang hoạt động hoặc tối ưu hóa để cải thiện hiệu suất hoặc sử dụng bộ nhớ. Tôi đã dành rất nhiều thời gian điều chỉnh việc triển khai này và đã có rất nhiều phản hồi tốt từ những người triển khai nó trong các ứng dụng web và các dự án Java khác.

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