我正在摆弄 BufferedImages,我想看看是否可以按原始尺寸绘制像素艺术图像并对其进行缩放。
在我调整它的大小之前,我注意到以其原始分辨率绘制像素艺术图像会导致一些奇怪的扭曲,我不知道为什么或如何阻止它。我绝对不会调整图像大小,并且我已确保将 RenderingHints 更改为nearest_neighbor。我有什么遗漏的吗?我什至加载了该文件,然后使用以下方法将其保存为新文件:
File outputfile = new File("image.png");
ImageIO.write(bufferedImage, "png", outputfile);
[更新]这是我正在使用的代码片段:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class test extends JPanel {
private BufferedImage sprite;
public test() {
try {
sprite = ImageIO.read(new File("floor.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(sprite, 10, 10, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
test sp = new test();
frame.add(sp);
frame.setSize(800, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
这是输出:https://i.sstatic.net/YJXJG.png
这是我所期待的:https://i.sstatic.net/8ilSr.png
我运行了你的代码。我想如果我将显示器分辨率设置为 125%,我可以重现您的输出图像。当显示器设置为 100% 分辨率时,这不会在我的 Windows 笔记本电脑上重现。
您是否尝试过在不同的显示器分辨率下进行测试?