调整图像大小的问题
Problems resizing an image
我正在尝试调整 Java 中的图像大小,但我遇到了下一个问题:
这是原始图像,但在调整大小代码之后,结果是这样的:
我使用的代码是下一个:
public BufferedImage res20x20(BufferedImage image){
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedIm= new BufferedImage(20, 20, type);
Graphics2D g= resizedIm.createGraphics();
g.drawImage(image, 0, 0, 20, 20, null);
g.dispose();
g.setComposite(AlphaComposite.Src);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
return resizedIm;
}
可以找到完整的代码here。
我想要的结果是这样的:
试试这个
public BufferedImage res20x20(BufferedImage image){
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedIm= new BufferedImage(20, 20, type);
Image scaledImage = inputImage.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
resizedIm.getGraphics().drawImage(scaledImage, 0, 0, null);
return resizedIm;
}
Image.SCALE_SMOOTH
是用于缩放图像的算法类型,您可以尝试不同的值以获得更适合您需要的结果
我正在尝试调整 Java 中的图像大小,但我遇到了下一个问题:
这是原始图像,但在调整大小代码之后,结果是这样的:
我使用的代码是下一个:
public BufferedImage res20x20(BufferedImage image){
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedIm= new BufferedImage(20, 20, type);
Graphics2D g= resizedIm.createGraphics();
g.drawImage(image, 0, 0, 20, 20, null);
g.dispose();
g.setComposite(AlphaComposite.Src);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
return resizedIm;
}
可以找到完整的代码here。
我想要的结果是这样的:
试试这个
public BufferedImage res20x20(BufferedImage image){
int type = image.getType() == 0? BufferedImage.TYPE_INT_ARGB : image.getType();
BufferedImage resizedIm= new BufferedImage(20, 20, type);
Image scaledImage = inputImage.getScaledInstance(20, 20, Image.SCALE_SMOOTH);
resizedIm.getGraphics().drawImage(scaledImage, 0, 0, null);
return resizedIm;
}
Image.SCALE_SMOOTH
是用于缩放图像的算法类型,您可以尝试不同的值以获得更适合您需要的结果