gpt4 book ai didi

java - 使用 Apache Batik 调整 svg 文件大小时内存不足

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:52 24 4
gpt4 key购买 nike

我使用以下代码生成了 svg 文件,

public class TestSVGGen {

static BufferedImage img;

public void paint(SVGGraphics2D g2d) {
g2d.setPaint(Color.red);
g2d.fill(new Rectangle(10, 10, 100, 100));
g2d.drawImage(img, 0, 0, img.getWidth() ,img.getHeight(), null);
g2d.setSVGCanvasSize(new Dimension(img.getWidth(), img.getHeight()));
}

public static void main(String[] args) throws IOException {

img = ImageIO.read(TestSVGGen.class.getClassLoader().getResourceAsStream("images/test_offscreen.jpg"));

// Get a DOMImplementation.
DOMImplementation domImpl = GenericDOMImplementation
.getDOMImplementation();

// Create an instance of org.w3c.dom.Document.
String svgNS = "http://www.w3.org/2000/svg";
Document document = domImpl.createDocument(svgNS, "svg", null);

// Create an instance of the SVG Generator.
SVGGraphics2D svgGenerator = new SVGGraphics2D(document);


// Ask the test to render into the SVG Graphics2D implementation.
TestSVGGen test = new TestSVGGen();
test.paint(svgGenerator);

// Finally, stream out SVG to the standard output using
// UTF-8 encoding.
boolean useCSS = true; // we want to use CSS style attributes
File file = new File("image.svg");
FileOutputStream fos = new FileOutputStream(file);
Writer out = new OutputStreamWriter(fos, "UTF-8");
svgGenerator.stream(out, useCSS);


}

现在,我想将此图像 Canvas 的尺寸重新调整为 18,000 * 18000 尺寸,因为我想将包含的图像重新调整为此尺寸,但每当我尝试以下代码(仅部分代码)时

svgCanvas.setSize(new Dimension(18000, 18000));

程序抛出内存不足异常,

我应该如何将大小调整为指定的大尺寸,是否有任何解决方法,例如图像平铺或分割。

我对 batik 很陌生,所以请帮助我

最佳答案

我使用 batik 的 contrib 目录中的 TiledImageTranscoder 解决了我的问题,并获得了成功的结果,没有任何内存不足错误。

从 ECLIPSE IDE 运行时,上述类一次仅使用 35 MB 内存,在我的机器上需要 30 秒才能将图像文件完全写入磁盘。

结果在 TIFF 中。

关于java - 使用 Apache Batik 调整 svg 文件大小时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15286536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com