i have generated svg file, using following code,
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);
}
now , i want to re size this image canvas to 18,000 * 18000 in dimensions because i want to re size included image to this size , but whenever i try the following code (only portion of the code)
svgCanvas.setSize(new Dimension(18000, 18000));
the program throws out of memory exception,
what should i do to re size to specified large size , is there any work around like tiling or segmentation of image .
i am very new to batik so please help me
i solved my problem using TiledImageTranscoderfrom from contrib directory of batik and get a successful result without any out of memory error .
the above class uses just 35 MB of memory at a time when running from ECLIPSE IDE and takes 30 Sec on my machine to completely write the image file to disk.
the result is in the TIFF though.