如何将任何Container切片到bufferedImage?

时间:2014-09-04 13:38:06

标签: java swing pdf jscrollpane bufferedimage

Java中是否有可用于从容器中获取缓冲图像的实现

例如:考虑JScrollpane,我将缓冲的图像大小设置为100 * 100,如果滚动窗格的大小为1000 * 100,我应该获得10个缓冲图像,每个缓冲图像大小为100 * 100
(即)来自位置的第一个缓冲图像

  1. (0,0,100,100)
  2. (0,100,100,100)
  3. (0,200,100,100)
  4. (0,300,100,100)
  5. ..
  6. ..
  7. ..
  8. ..
  9. ..
  10. (0,900,100,100)
  11. 我会将所有这些缓冲的图像附加到PDF文件中。

2 个答案:

答案 0 :(得分:0)

你的意思是这样的吗?遗憾的是我无法测试它,但也许你可以提供一些演示代码吗?

Container c = .. // your container..
Dimension d = c.getPreferredSize(); // your slices
BufferedImage bi = new BufferedImage(d.width, d.height, BufferedImage.TYPE_INT_ARGB);
c.paintComponents( be.createGraphics() );

答案 1 :(得分:0)

您可以使用Screen Image类创建任何组件的图像。您还可以指定一个Rectangle来获取组件的子图像。

  

我需要像BufferedImage [] convertComponenttoBufferedImage(Component c){}这样的API,它应该处理组件并转换为bufferedimages。有可能吗?

为图像的列/行创建一个循环,并在调用ScreenImage类时更改每个Rectangle的尺寸。