Как изменить размер изображения с помощью Java? - PullRequest
1 голос
/ 25 октября 2010

У меня есть куча изображений 48x48, для которых мне нужны версии 16x16, и вместо того, чтобы хранить версии 16x16, я хочу изменить их размер на лету. Мой текущий код выглядит следующим образом (model.icon () возвращает изображение 48x48):

Icon icon = model.icon();
Image image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
return new ImageIcon(image.getScaledInstance(16, 16, Image.SCALE_AREA_AVERAGING));

К сожалению, когда этот код запускается, я получаю черный квадрат 16x16 вместо изображения.

Ответы [ 3 ]

4 голосов
/ 25 октября 2010

Попробуйте это.

ImageIcon icon = model.icon();
Image image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(icon.getImage(), 0, 0, 16, 16, null);
return new ImageIcon(image);
3 голосов
/ 25 октября 2010

Вам нужно больше информации, чем просто ссылка на иконку. Вам нужен доступ к реальному изображению. Ваше новое изображение - это черный квадрат, потому что вы никогда не устанавливаете источник, если изображение (то есть вы создаете новое черное изображение, а затем масштабируете пустое изображение).

2 голосов
/ 25 октября 2010

Вы не помещаете иконку в изображение.Если значок ImageIcon, то вы можете сделать:

..
Graphics2D g2 = image.createGraphics();
g2.drawImage(icon.getImage(), 0, 0, 16, 16, null);
g2.dispose();
return new ImageIcon(image);
...