1

16x16バージョンが必要な48x48画像がたくさんあり、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の黒い四角が表示されます。

4

3 に答える 3

4

これを試して。

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);
于 2010-10-25T16:56:43.287 に答える
3

アイコンの参照だけでなく、より多くの情報が必要です。実際の画像にアクセスする必要があります。新しい画像は黒い四角です。これは、画像の場合はソースを設定しないためです(つまり、新しい黒い画像を作成してから、空の画像を拡大縮小します)。

于 2010-10-25T16:48:48.297 に答える
2

あなたはアイコンを画像に入れていません。アイコンがの場合、次のImageIconことができます。

..
Graphics2D g2 = image.createGraphics();
g2.drawImage(icon.getImage(), 0, 0, 16, 16, null);
g2.dispose();
return new ImageIcon(image);
于 2010-10-25T16:59:15.863 に答える