2009-05-14 4 views

ответ

7

Следующий код принимает Image от двух ImageIcon s и создает новый ImageIcon.

Изображение из второго ImageIcon рисуется на верхней части изображения из первой, а затем полученное изображение используется, чтобы сделать новый ImageIcon:

Image img1 = imageIcon1.getImage(); 
Image img2 = imageIcon2.getImage(); 

BufferedImage resultImage = new BufferedImage(
    img1.getWidth(null), img1.getHeight(null), BufferedImage.TYPE_INT_ARGB); 

Graphics2D g = resultImage.createGraphics(); 
g.drawImage(img1, 0, 0, null); 
g.drawImage(img2, 0, 0, null); 
g.dispose(); 

ImageIcon resultImageIcon = new ImageIcon(resultImage); 

Редактировать (Устранены некоторые ошибки, добавлено поддержка прозрачности.)

Для обеспечения прозрачности BufferedImage.TYPE_INT_ARGB может использоваться для типа изображения в конструкторе, а не для BufferedImage.TYPE_INT_RGB, который не имеет альфа-канала.

+0

Это довольно близко, новое изображение, кажется, имеет черный фон вместо прозрачного – willcodejavaforfood

+0

Изменен тип TYPE_4BYTE_ABGR, который позаботился об альфе. Большое спасибо – willcodejavaforfood