我正在尝试调整图像的大小,将其保存为 BufferedImage。如果我不缩放图像,我可以正常工作。
使用以下代码,传入文件名并将其转换为 BufferedImage 这工作正常使用g.drawImage(img, x, y, null);
where img is the BufferedImage
public Sprite(String filename){
ImageIcon imgIcon = new ImageIcon(filename);
int width = imgIcon.getIconWidth();
int height = imgIcon.getIconHeight();
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics bg = bimg.getGraphics();
bg.drawImage(imgIcon.getImage(), 0, 0, null);
bg.dispose();
this.sprite = bimg;
}
下面的方法在这里不起作用,它需要一个文件名和一个调整大小的宽度。g.drawImage(img, x, y, null);
它调整它的大小,然后将其转换为 BufferedImage,但在 img 是 BufferedImage 的情况下再次使用它不起作用。
public Sprite(String filename, int width){
ImageIcon imgIcon = new ImageIcon(filename);
Image img = imgIcon.getImage();
float h = (float)img.getHeight(null);
float w = (float)img.getWidth(null);
int height = (int)(h * (width / w));
Image imgScaled = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage bimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics bg = bimg.getGraphics();
bg.drawImage(imgScaled, 0, 0, null);
bg.dispose();
this.sprite = bimg;
}
所以我的问题是,为什么第二个块不起作用?