Java 在两帧中打开图像,将其中一帧更改为灰度

Java 在两帧中打开图像,将其中一帧更改为灰度,java,swing,desktop-application,jinternalframe,grayscale,Java,Swing,Desktop Application,Jinternalframe,Grayscale,我创建了一个桌面应用程序,可以在两个internalFrames中打开相同的图像。我需要在应用程序中将其中一个图像更改为灰度 我的尝试如下所示。当我单击“文件”菜单中的按钮时,我需要一个内部帧图像为原始图像,另一个为灰度图像 GuiPanelImage(File fileName) { width = GuiPanelImage.WINDOW_WIDTH; height = GuiPanelImage.WINDOW_HEIGHT; try { Bu

我创建了一个桌面应用程序,可以在两个
internalFrame
s中打开相同的图像。我需要在应用程序中将其中一个图像更改为灰度

我的尝试如下所示。当我单击“文件”菜单中的按钮时,我需要一个内部帧图像为原始图像,另一个为灰度图像

GuiPanelImage(File fileName) {
     width = GuiPanelImage.WINDOW_WIDTH;

     height = GuiPanelImage.WINDOW_HEIGHT;

    try {
        BufferedImage inputImage = ImageIO.read(fileName); 

        outputImage = new BufferedImage(inputImage.getWidth(),
          inputImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
// I can replace .TYPE_INT_ARGB with .TYPE_BYTE_GRAY to convert to grayscale

        picture = new ImageIcon(fileName.getPath());

        Graphics2D g2d = ( Graphics2D) outputImage.createGraphics();

        g2d.drawImage(inputImage, 0, 0, null); 
    } 
    catch (IOException ex) {
        Logger.getLogger(GuiPanelImage.class.getName()).log(Level.SEVERE,
          null, ex);
    }             
}

为什么你不能做下面的事情

outputImage1 = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
outputImage2 = new BufferedImage(inputImage.getWidth(), inputImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
说明如何在
JInternalFrame
中显示图片

显示并与禁用的图像进行比较


尝试使用光栅功能扫描输入,并为其创建和输出目录

是的,Torgamus先生,我以前做过这部分,就像您发布这些语法的方式一样;但是没有工作只是因为我不知道如何在loadActionPerformed代码中调用outputImage2这里是代码