Спасибо за ответ, я также обработал ситуацию следующим образом:
Вместо использования масштаба я создал новую функцию с именем resize
public static BufferedImage resize(BufferedImage img, int newW, int newH) {
int w = img.getWidth();
int h = img.getHeight();
BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType());
Graphics2D g = dimg.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
g.dispose();
return dimg;
}
Затем для моего буферизованного изображения с именем bfЯ позвонил resize func и преобразовал его в иконку
bf = resize(bf, bf.getWidth()/3, bf.getHeight()/3);
Image im = Toolkit.getDefaultToolkit().createImage(bf.getSource());
Icon ic = new ImageIcon(im);
Затем я добавил кнопки с изображениями
JButton bt = new JButton("Picture", ic);
bt.setVerticalTextPosition(AbstractButton.BOTTOM);
bt.setHorizontalTextPosition(AbstractButton.CENTER);
add(bt);