将 JComponent 中的绘图保存到 Tiff 文件中
如何将JComponent中的绘图保存为tiff格式?我只知道如何保存整个Java文件,但不知道如何保存特定的JComponent。帮助我:-(
编辑: 谢谢大家,现在我可以将我的绘图保存为 Jpeg 格式了。
但是我只想保存其中一个组件? c.paintAll(bufferedImage.getGraphics());
似乎保存了整个组件。但是,我只想保存此组件 c.add(new PaintSurface(), BorderLayout.CENTER);
而不使用 panel.add(saveBtn);
我该怎么做?谢谢。
Container c = getContentPane();
c.setLayout(new BorderLayout());
Panel panel = new Panel();
panel.add(saveBtn);
c.add("South", panel);
c.setBackground(Color.WHITE);
c.add(new PaintSurface(), BorderLayout.CENTER);
How to save drawing in JComponent into tiff format? I only know how to save the whole Java file but I dont know how to save specific Jcomponent. Help me :-(
EDITED:
Thanks guys, now I am able to save my drawing to Jpeg.
However I just wanted to save one of the component? The c.paintAll(bufferedImage.getGraphics());
seem to save the whole component. However, I just want to save this component c.add(new PaintSurface(), BorderLayout.CENTER);
without panel.add(saveBtn);
How can I do that? Thanks.
Container c = getContentPane();
c.setLayout(new BorderLayout());
Panel panel = new Panel();
panel.add(saveBtn);
c.add("South", panel);
c.setBackground(Color.WHITE);
c.add(new PaintSurface(), BorderLayout.CENTER);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这基本上与 broschb 的 解决方案相同,仅使用正确的方法语法并实际调用适当的 JAI 例程。
可以在此处找到各种函数的文档:
如果您想以 tiff 以外的格式保存,可以使用 ImageIO.getWriterFormatNames() 获取当前所有图像输出格式的列表由 JRE 加载。
更新:如果您对绘制子组件不感兴趣,您可以用 Component.paint(...) 替换对 Component.paintAll(...) 的调用。我更改了示例代码以反映这一点。将 subcomp 设置为 true 并渲染子组件并将其设置为 false 将忽略它们。
This is essentially identical to broschb's solution only using correct syntax and actually calling the appropriate JAI routines.
Documentation for the various functions can be found here:
If you want to save in a format other than tiff you can use ImageIO.getWriterFormatNames() to obtain a list of all image output formats currently loaded by the JRE.
UPDATE: If you are not interested in painting sub components you can substitute the call to Component.paintAll(...) with Component.paint(...). I have altered the example code to reflect this. Setting subcomp to true with render the subcompnents and setting it to false will ignore them.
ScreenImage 类允许您保存任何组件的图像。
The ScreenImage class allows you to save an image of any component.
您可以通过创建面板大小的缓冲图像来获取组件或包含绘图的面板的缓冲图像。然后,您可以将面板内容绘制到缓冲图像上。然后,您可以使用 JAI(Java Advanced Imaging)库将缓冲图像保存为 tiff。您必须在此处查看该文档。
语法可能略有偏差,我不知道,但这是总体思路。然后,您可以使用 JAI 并将缓冲图像转换为 TIFF。
you can get a Buffered Image of the component, or the panel that contains the drawing by creating a buffered image the size of the panel. You can then paint the panels contents onto the buffered image. You can then use JAI(Java Advanced Imaging) library to save the buffered image as a tiff. You'll have to check the docs on that here.
The syntax may be slightly off, i'm not at an idea, but that is the general idea. You can then use JAI and convert the buffered image to a TIFF.