问题描述
我有一个 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 (将#修改为@)