2010-10-21 34 views
14

Tôi có servlet trong ứng dụng web của tôi phục vụ hình ảnh và khi tôi truy cập các url đó bằng hình ảnh trình duyệt là máy chủ chính xác. Sau đó, tôi có servlet khác mà thay đổi kích thước hình ảnh, ý tưởng là để truy cập có được hình ảnh bằng url trong thay đổi kích thước servlet và sau đó thay đổi kích cỡ hình ảnh. Nhưng đối với một số lý do tất cả các phương pháp sau đây trả về null, nhưng khi tôi truy cập url đã cho bằng trình duyệt, hình ảnh được hiển thị chính xác.Làm cách nào để đọc hình ảnh từ URL trong Java?

URL imageURL = new URL(fullUrl); 
    // Case 1 
    RenderedImage img = ImageIO.read(imageURL); 

    // Case 2 
    BufferedImage img = JAI.create("url", imageURL).getAsBufferedImage(); 

    // Case 3 
    Image img = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(imageURL); 
+0

bạn vừa thử: imageURL.openStream() để xem nếu nó không phải là vấn đề kết nối mạng (trình duyệt kết nối nhưng không phải là JVM) – Vinze

Trả lời

22
URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
Image image = ImageIO.read(url); 

hoặc

URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
java.awt.Image image = java.awt.Toolkit.getDefaultToolkit().createImage(url); 

Cập nhật:

Mã này làm việc cho tôi Hãy thử kiểm tra URL của bạn.

public static void main(String[] args) throws Exception { 
    URL imageURL = new URL("http://www.digitalphotoartistry.com/rose1.jpg"); 
    // Case 1 
    RenderedImage img = ImageIO.read(imageURL); 
    System.out.println(img); 
} 

đầu ra:

[email protected]: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 col 
or space = [email protected] transparency = 1 has alpha = fa 
lse isAlphaPre = false ByteInterleavedRaster: width = 553 height = 737 #numDataE 
lements 3 dataOff[0] = 2 
+1

Như bạn thấy tôi đã thử, nhưng nó trả về giá trị rỗng. – newbie

+0

@newbie @ T.J. Crowder tôi bỏ lỡ điều đó :), btw bạn đã kiểm tra url? mã của tôi đang hoạt động như .. –

+0

@newbie: hãy thử với các url khác, ví dụ: đặt 'fullUrl =" http://www.digitalphotoartistry.com/rose1.jpg ";' –

0

Từ the docs:

Nếu không đăng ký ImageReader tuyên bố để có thể đọc những dòng kết quả, null được trả về.

Có thể bạn chưa đăng ký ImageReader cho loại hình ảnh?

+0

Tôi phát hiện ra rằng servlet nhận được hình ảnh không có quyền truy cập để servlet phục vụ hình ảnh, do đó kết quả luôn là null. – newbie

+0

@newbie: Rất tiếc, tôi đã mong đợi một 'IOException'. –

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