Java BufferedImage:以其原始像素大小绘制像素艺术图像会导致像素失真

问题描述 投票:0回答:1

我正在摆弄 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

java image bufferedimage
1个回答
0
投票

我运行了你的代码。我想如果我将显示器分辨率设置为 125%,我可以重现您的输出图像。当显示器设置为 100% 分辨率时,这不会在我的 Windows 笔记本电脑上重现。

您是否尝试过在不同的显示器分辨率下进行测试?

© www.soinside.com 2019 - 2024. All rights reserved.