将一些图片添加到 BufferedImage 然后保存

Posted

技术标签:

【中文标题】将一些图片添加到 BufferedImage 然后保存【英文标题】:Adding some pictures to a BuffredImage then Save it 【发布时间】:2015-10-20 04:41:49 【问题描述】:

我的总体想法是制作一个 Sprite-Sheet-Maker 我的意思是该程序将:

    收集多张图片,例如“1.bmp”、“2.png”和“3.jpg” 创建新的 BuffredImage 变量并在其上绘制 3 张图片(同时在 JPanel 上绘制 BuffredImage) 保存最终图片“Final.png”

我正在考虑在一个循环中进行第一步和第二步,因为我有一个 JList 包含所有图片的路径。

为此,我在 Eclipse 上使用了 Java 窗口构建器,我制作了表单并尝试在 Panel 上测试一个简单的代码。

Panel panel = new Panel(); //Work
panel.setBackground(Color.BLUE); //Work
BufferedImage img = new BufferedImage(5,5,5); //Work
Graphics g = null ; //Work
panel.paintComponents(g); //work
g.setColor(Color.BLACK); //ERROR---------------------ERROR
g.fillRect(0, 0, 50, 50);

问题不仅在于该代码,而且在于所有想法,所以请您的任何想法都可以帮助我,甚至是我项目的一部分的解决方案的一部分,所以请对任何想法发表评论你有。

【问题讨论】:

【参考方案1】:
 g.setColor(Color.BLACK);//error

自从

  Graphics g = null ;//null value, you are not create any obeject

null 值上,我们无法执行任何操作。

您必须在JPanel 类中覆盖paintComponent 方法,然后您将收到Graphics 对象。

      JPanel panel = new JPanel() 
            @Override
            public void paintComponent(Graphics g) 
                super.paintComponent(g);
                g.setColor(Color.BLUE);
                g.fillRect(0, 0, 100, 100);
            
        ;
        frame.add(panel);//added to frame.

See this link

【讨论】:

好的,如何将“Graphics g”与 JPanel 关联起来?? 你想添加到面板吗? 我希望能够在 jpanel 上画画 覆盖paintComponent 方法。看到那个链接【参考方案2】:
    使用GridLayout 创建一个JPanel。 创建 3 个 JLabel,每个 JLabel 包含每个图像的图标。然后将每个标签添加到面板中。 要创建任何 Swing 组件的图像,您可以使用 Screen Image 类。

【讨论】:

以上是关于将一些图片添加到 BufferedImage 然后保存的主要内容,如果未能解决你的问题,请参考以下文章

用BufferedImage加载图片

如何在 JPanel 中查看 BufferedImage?

ArrayList 不添加 BufferedImage?

java 实现图片水印

c#怎么实现将当前图片添加到项目中

java Bitmap怎么转成BufferedImage呢?