Java:调整图像大小不起作用
Java: Resize image doesn't work
我不知道为什么这种方法无法调整图像大小。没有错误发生(如果是这样我有一个例外):
private static void resizeImage(int width, int height) {
try {
BufferedImage rawImg = ImageIO.read(new File("%imgg%.png"));
int gamlaWidth = rawImg.getWidth();
int gamlaHeight = rawImg.getHeight();
BufferedImage dimg = new BufferedImage(width, height, rawImg.getType());
Graphics2D g = rawImg.createGraphics();
g.drawImage(rawImg, 0, 0, 114, 114, null);
g.dispose();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Ett fel uppstod:\n" + e, "Felmeddelande", 0);
}
}
为什么这段代码没有任何改变?我希望尺寸为 114x114。
您始终可以使用此代码调整图像大小。
Image smallerImage = null;
ImageIcon smallerImageIcon = null;
public void resizeImage(int width, int height, String image)
{
ImageIcon originalImage = new ImageIcon(image);
smallerImage = originalImage.getImage().getScaledInstance(width,height,0);
smallerImageIcon = new ImageIcon(smallerImage);
}
如果您希望图像 %imgg%.png
为 114 x 114,请使用此方法,您可以像这样调用此方法
resizeImage(114, 114, "%imgg%.png");
对于您的代码,我认为问题可能出在您将其设置为 114 x 114 的位置,因为该尺寸与缩放后的尺寸不同。
尝试
BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha)
{
System.out.println("resizing...");
int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
Graphics2D g = scaledBI.createGraphics();
if (preserveAlpha) {
g.setComposite(AlphaComposite.Src);
}
g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();
return scaledBI;
}
使用
ImageIcon originalImage = new ImageIcon("%imgg%.png");
Image resizedImage = createResizedCopy(originalImage.getImage(),114,114,true);
见here
我不知道为什么这种方法无法调整图像大小。没有错误发生(如果是这样我有一个例外):
private static void resizeImage(int width, int height) {
try {
BufferedImage rawImg = ImageIO.read(new File("%imgg%.png"));
int gamlaWidth = rawImg.getWidth();
int gamlaHeight = rawImg.getHeight();
BufferedImage dimg = new BufferedImage(width, height, rawImg.getType());
Graphics2D g = rawImg.createGraphics();
g.drawImage(rawImg, 0, 0, 114, 114, null);
g.dispose();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Ett fel uppstod:\n" + e, "Felmeddelande", 0);
}
}
为什么这段代码没有任何改变?我希望尺寸为 114x114。
您始终可以使用此代码调整图像大小。
Image smallerImage = null;
ImageIcon smallerImageIcon = null;
public void resizeImage(int width, int height, String image)
{
ImageIcon originalImage = new ImageIcon(image);
smallerImage = originalImage.getImage().getScaledInstance(width,height,0);
smallerImageIcon = new ImageIcon(smallerImage);
}
如果您希望图像 %imgg%.png
为 114 x 114,请使用此方法,您可以像这样调用此方法
resizeImage(114, 114, "%imgg%.png");
对于您的代码,我认为问题可能出在您将其设置为 114 x 114 的位置,因为该尺寸与缩放后的尺寸不同。
尝试
BufferedImage createResizedCopy(Image originalImage, int scaledWidth, int scaledHeight, boolean preserveAlpha)
{
System.out.println("resizing...");
int imageType = preserveAlpha ? BufferedImage.TYPE_INT_RGB : BufferedImage.TYPE_INT_ARGB;
BufferedImage scaledBI = new BufferedImage(scaledWidth, scaledHeight, imageType);
Graphics2D g = scaledBI.createGraphics();
if (preserveAlpha) {
g.setComposite(AlphaComposite.Src);
}
g.drawImage(originalImage, 0, 0, scaledWidth, scaledHeight, null);
g.dispose();
return scaledBI;
}
使用
ImageIcon originalImage = new ImageIcon("%imgg%.png");
Image resizedImage = createResizedCopy(originalImage.getImage(),114,114,true);
见here