我用Java制作一个小游戏,它使用像素图形样式,有许多精灵16x16或32x32像素。然而,当我旋转它们时,我不想要"锯齿"在旁边,所以我使用了RenderingHint
RenderingHint.KEY_INTERPOLATION
RenderingHint.VALUE_INTERPOLATION_BILINEAR
不幸的是,由于使用的许多图像非常小(16x16,32x32),因此生成的图像完全无法使用。输出:
如您所见,小图形模糊不清。这是大图像的预期效果,但对于小图像,它非常糟糕。
一种解决方案是提高我所有图形的分辨率,同时保持" blocky"影响。这将是一种痛苦,那么还有另一种调整插值的方法吗?
非常感谢你们。
答案 0 :(得分:0)
升级您的小图片并改为使用它:
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比例因子替换为可提供可接受结果的最小值。
使用高质量插值完成剩余的渲染。