在图像编辑器中在 Swing 中颠倒加载的图像看起来很完美

问题描述

我有一个 Java Swing 应用程序,出于业务原因必须加载图像

应用程序运行良好,正在生产中,所有图像均已正确加载,但我们收到与图像颠倒加载(旋转 180 度)相关的错误

作为第一步,我开始在我的应用程序中加载图像,然后应用程序被有效地旋转加载。

我认为该问题与我们的代码相同:同时我们对 BufferedImage 进行了最少的操作。

然后我创建了一个非常愚蠢的测试,只有纯 java 代码,没有任何基础架构代码:

public class FlipImage extends JDialog {

private final JPanel contentPanel = new ImagePanel();

public static void main(String[] args) {
    try {
        FlipImage dialog = new FlipImage();
        dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        dialog.setVisible(true);
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public FlipImage() {
    setBounds(100,100,450,300);
    getContentPane().setLayout(new BorderLayout());
    contentPanel.setLayout(new FlowLayout());
    contentPanel.setBorder(new EmptyBorder(5,5,5));
    getContentPane().add(contentPanel,BorderLayout.CENTER);
    {
        JPanel buttonPane = new JPanel();
        buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
        getContentPane().add(buttonPane,BorderLayout.SOUTH);
        {
            JButton okButton = new JButton("OK");
            okButton.setActionCommand("OK");
            buttonPane.add(okButton);
            getRootPane().setDefaultButton(okButton);
        }
        {
            JButton cancelButton = new JButton("Cancel");
            cancelButton.setActionCommand("Cancel");
            buttonPane.add(cancelButton);
        }
    }
}

private class ImagePanel extends JPanel{

    private BufferedImage image;

    public ImagePanel() {
       try {                
          image = ImageIO.read( new File("C:\\Users\\Alessandro\\Desktop\\flip_little.jpg"));
       } catch (IOException ex) {
       }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image,getWidth(),getHeight(),this);
    }
}
}

令我大吃一惊的是,图片真的是旋转加载的。但是如果我使用 Windows Paint 或任何其他工具打开相同的图像,其他工具会正确加载图像。

那么从代码的角度来看,没有问题。

问题与图片本身有关。

有没有人遇到过同样的问题,并找到了这个问题的根本原因?

可能是在 Java 中实现编码的一个问题,我不是图像处理方面的专家 - 在互联网上浏览我也没有找到太多。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)