我需要将 BufferedImage 保存为 png 图像。下一步,我需要在另一个程序(Avisynth)中打开图像。该程序能够打开我在 ms-paint 中绘制的图像,但我的 java 程序创建的图像无法打开。我的程序和 ms-paint 中的图像是 png 类型,在 windows 中看起来不错。这意味着我可以打开它,并且图像包含我绘制的所有内容。在外部程序中,它会引发以下错误:
Avisynth open failure:
ImageReader error 'Could not open file' in DevIL library.
reading image"C:\Images\mask\mirror.png"
DevIL version 166.
(C:\User\admin\Documents\4555.avs)
这是代码。即使使用注释行,我也尝试过。我在谷歌上找到了一些东西。此消息是错误图像格式的典型信息。但我不知道如何像 ms-paint 那样做同样的图像。
BufferedImage img = new BufferedImage(video.getWidth(), video.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) img.getGraphics();
img.getGraphics().setColor(Color.white);
c.paintAll(img.getGraphics());
File f = new File(path + ".png");
opencv_core.IplImage imgs = IplImage.createFrom(img);
opencv_highgui.cvSaveImage(f.getPath(), imgs);
//ImageIO.write(img, "png", f);
在代码中:
c 是 JComponent,其中包含图像,我要保存,并且我使用了 JavaCL 库