0

これは、getScaledInstance() を使用して画像をスケーリングしようとしたものです。しかし、それは画像をスケーリングしていません。誰でもこのコードを修正できますか?

BufferedImage image = ImageIO.read(new File("img.jpg"));
JLabel picLabel = new JLabel(new ImageIcon(image));
image=(BufferedImage)image.getScaledInstance(50,50, Image. SCALE_SMOOTH);
add(picLabel);
4

2 に答える 2

4

新しい画像を作成しても、ImageIcon は更新されません。コードの順序を変更します。

//BufferedImage image = ImageIO.read(new File("img.jpg"));
//JLabel picLabel = new JLabel(new ImageIcon(image));
Image image = ImageIO.read(new File("img.jpg"));
image=image.getScaledInstance(50,50, Image. SCALE_SMOOTH);
JLabel picLabel = new JLabel(new ImageIcon(image));
add(picLabel);

編集:投稿した元のコードは実行されません。スケーリングされた画像を BufferedImage にキャストすることはできません。実行の問題を解決するためにコードを更新しました。

于 2013-07-17T15:35:35.043 に答える
1

私はこれを行い、今では正常に動作しています。:)

    BufferedImage image = ImageIO.read(new File("img.jpg"));
    BufferedImage img = new BufferedImage(200,150,BufferedImage.TYPE_INT_RGB);
    img.getGraphics().drawImage(image,0,0,200,150,null);

    JLabel label = new JLabel(new ImageIcon(img));
    add(label);
于 2013-07-17T17:04:47.633 に答える