所以我有一个我需要创建目录的任务。 目录需要有一个列表,一个图像和一个描述。 我的整个代码都有效,所以我对编码没有任何问题。
我的图像尺寸确实存在问题。 如何处理java gui程序中的图像,使它们在运行时全部变成一个大小。 请让我知道:D
答案 0 :(得分:1)
当您在图像中读取时,创建一个与您想要的大小完全相同的新BufferedImage,通过getGraphics()
获取它的Graphics对象,使用Graphics#drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
将原始图像绘制到新图像中,其中x和y为0,宽度和高度来自Graphics对象的新图像dispose()
的尺寸,然后在JLabel中将新图像显示为ImageIcon。确保原始图像的尺寸与新图像的尺寸相同或更大,否则您的图像看起来会很糟糕。
例如,请注意,由于我没有启动IDE,因此此代码可能不完全正确:
BufferedImage originalImage = ImageIO.read(something); // read in original image
// create new empty image of desired size
BufferedImage newImage = new BufferedImage(desiredWidth, desiredHeight, BufferedImage.TYPE_INT_ARGB);
Graphics g = newImage.getGraphics(); // get its graphics object
// draw old image into new image
g.drawImage(originalImage, 0, 0, desiredWidth, desiredHeight, null);
g.dispose(); // get rid of Graphics object
// create ImageIcon and put in JLabel to display
Icon newIcon = new ImageIcon(newImage);
myJLabel.setIcon(newIcon);
答案 1 :(得分:0)
我可能会创建一个JPanel来绘制一个Image,然后使用该方法:
myPanel.setSize(new Dimension(x,y))
或
myPanel.setPreferredSize(new Dimension....)
答案 2 :(得分:0)
awt.Image类中有一个方法(image = imgobj.getScaledInstance(width, height, hints)
)非常好地提供了重新调整大小的功能,我总是在需要时使用它来重新调整图像大小。请参阅here一些例子:-),我希望它对你有用,这是我见过的最方便的图像缩放方式。创建一个方法将图像传递给您想要的图像的方法和大小,并返回图像以返回重用代码;)