java - 在两个内部帧中打开图像,将其中一个更改为灰度

标签 java swing desktop-application jinternalframe grayscale

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

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

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);

关于java - 在两个内部帧中打开图像,将其中一个更改为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15705053/

相关文章:

java - ContentValue 对未从 RAW JSON 插入 SQLite 数据库

java - Apache poi 在 Excel 图表中添加标签

java - 无法解析 : com. google.android.material.material :1. 0

java - JTable 错误 : java. lang.ArrayIndexOutOfBoundsException: 1 >= 0

java - 扩展 JFrame 时 JPanel 显示不正确

c# - Windows 应用程序认证工具包失败 : Multi user session test

java - 升级到 Spring 4.2 后 ContentNegotiatingViewResolver MediaTypes 错误

java - 如何不断地显示形状,但仍然重新绘制屏幕?

database - 如何在桌面应用程序中有效保存数据库密码?

node.js - 从现有 Exe 创建适用于 Windows 应用商店的应用程序包