我有一段代码,用于将图像调整为幕布尺寸(我想将分辨率更改为200 dpi)。基本上,我需要它的原因是因为我想显示用户选择的图像(有点大),然后如果用户批准,我想在不同的地方显示相同的图像,但使用较小的分辨率。不幸的是,如果我给它一个大图像,屏幕上什么也不会出现。另外,如果我改变
imageLabel.setIcon(newIcon);
至
imageLabel.setIcon(icon);
我得到显示的图像,但显示的分辨率不正确,这就是我知道在此代码片段内而不是其他地方存在问题的方式。
Image img = icon.getImage();
BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bi.createGraphics();
boolean myBool = g.drawImage(img, 0, 0, 100, 100, null);
System.out.println(myBool);
ImageIcon newIcon = new ImageIcon(bi);
imageLabel.setIcon(newIcon);
submitText.setText(currentImagePath);
imageThirdPanel.add(imageLabel);
最佳答案
这是我的解决方案:
private BufferedImage resizeImage(BufferedImage originalImage, int width, int height, int type) throws IOException {
BufferedImage resizedImage = new BufferedImage(width, height, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, width, height, null);
g.dispose();
return resizedImage;
}