我正在用Java做一个小游戏,它使用像素图形样式,具有许多精灵16x16或32x32像素。但是,当我旋转它们时,我不希望侧面出现“锯齿”,因此我使用了RenderingHint

RenderingHint.KEY_INTERPOLATION
RenderingHint.VALUE_INTERPOLATION_BILINEAR


不幸的是,由于使用的许多图像非常小(16x16、32x32),因此生成的图像完全无法使用。输出:

http://imgur.com/a/roRh4

如您所见,小图形模糊。这是大图像的预期效果,但是对于小图像,这是非常糟糕的。

一种解决方案是提高我所有图形的分辨率,同时保持“块状”效果。那会很痛苦,所以还有另一种方法来调整插值吗?

非常感谢你们。

最佳答案

放大您的微小图像,并改用它:

BufferedImage tiny = ImageIO.read(new File("..."));
BufferedImage bigger = new BufferedImage(tiny.getWidth()*10, tiny.getHeight()*10, tiny.getType());
Graphics2D g = bigger.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
g.drawImage(tiny, 0, 0, bigger.getWidth(), bigger.getHeight(), 0, 0, tiny.getWidth(), tiny.getHeight(), null);


将10比例因数替换为可提供可接受结果的最小值。

使用高质量的插值来完成其余的渲染。

10-08 20:14