如何解决在图像编辑器中在 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 举报,一经查实,本站将立刻删除。