2013-02-24 28 views
9

Tôi đã cố chuyển đổi một số ImageIcon thành BufferedImage ... Và tôi đã không có may mắn.Chuyển đổi ImageIcon thành BufferedImage

Tôi có một ImageIcon đã tồn tại trước đó cần được chuyển đổi thành hình ảnh đệm cho số lượng lớn các hoạt động BufferedImage tồn tại.

Tôi đã tìm thấy một vài cách, nhưng tất cả đều cực kỳ tốn kém CPU.

Trả lời

29

Có gì sai với:

BufferedImage bi = new BufferedImage(
    icon.getIconWidth(), 
    icon.getIconHeight(), 
    BufferedImage.TYPE_INT_RGB); 
Graphics g = bi.createGraphics(); 
// paint the Icon to the BufferedImage. 
icon.paintIcon(null, g, 0,0); 
g.dispose(); 
+1

Rất hữu ích cảm ơn bạn rất nhiều, tôi đã từng đến accross phương pháp này, nhưng nhanh chóng bắn nó xuống do giả định immiediet tôi rằng nó sẽ thực hiện tồi tệ, nhưng sau cố gắng theo cách của bạn, tất cả dường như hoạt động tốt. – Caelum

+1

'BufferedImage.TYPE_INT_ARGB' nếu có các pixel trong suốt trong biểu tượng. – Matthieu

-2

tôi đã cố gắng một cái gì đó gọi là Scalr, xem mã dưới đây

Scalr.resize((BufferedImage) ImageIO.read(file), Method.SPEED, 250, OP_ANTIALIAS, OP_BRIGHTER);

Cheers.

+2

Bạn đã thực sự đọc câu hỏi chưa? –

8

Xem ImageIcon, ImageBufferedImage:

ImageIcon yourImage; 
Image image = yourImage.getImage(); 
BufferedImage buffered = (BufferedImage) image; 
+2

Sử dụng tùy chọn này nếu ImageIcon chứa BufferedImage hoặc câu trả lời của Werner. – aditsu

+0

Hoạt động trên Windows nhưng không hoạt động trên Linux (đã thử trên Ubuntu). – Matthieu

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