Java Programming‎ > ‎Graphics 2D‎ > ‎

Output SVG dengan Graphics2D + Apache Batik

posted Oct 1, 2011, 6:10 AM by Editor KursusInternet   [ updated Oct 22, 2011, 11:44 PM ]

Pendahuluan

SVG (Scalable Vector Graphics) adalah standar XML untuk gambar grafik vektor, yaitu format file gambar yang dapat diperbesar dan diperkecil tanpa mengurangi kualitas gambar karena digambar ulang dengan teknik dua dimensi.

Karena makin tersedianya dukungan SVG untuk browser modern dan sifatnya yang open, maka berbagai kalangan mulai melirik penggunaan format ini secara intensif.

Untuk Java, kita sebelumnya sudah mengenal banyak penggunaan Graphics2D ini. Namun output yang tersedia tidak ada dalam bentuk SVG. Untuk merealisasikan hal ini, kita bisa menggunakan library Apache Batik yang dapat mengkonversi output dari Graphics2D ke dalam bentuk SVG.

Contoh potongan berikut ini akan menunjukkan penggunaan Apache Batik untuk hal tersebut. Library jar yang digunakan cukup file batik.jar dari kumpulan jar Apache Batik.

Contoh Kode - Konversi Graphics2D menjadi File SVG

package com.kursusinternet.graphics;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Polygon;
import java.io.FileWriter;
import java.io.IOException;

import org.apache.batik.dom.GenericDOMImplementation;
import org.apache.batik.svggen.SVGGeneratorContext;
import org.apache.batik.svggen.SVGGraphics2D;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;

public class GambarSegitigaSVG {
  
  public static void main(String[] args
  throws IOException 
  {
    //Inisialisasi Document Root
    DOMImplementation domImpl =
      GenericDOMImplementation.getDOMImplementation();
    String svgNS = "http://www.w3.org/2000/svg";
    Document document = domImpl.createDocument(svgNS, "svg"null);
    
    //Inisialisasi SVGGraphics2D - Implementasi dari abstract class Graphics2D
    SVGGraphics2D svgGenerator = new SVGGraphics2D(document);

    //Definisi Panjang & Lebar Canvas
    svgGenerator.setSVGCanvasSize(new Dimension(400400));


    //Gambar Segitiga
    int x[] {50200350};
    int y[] {32050320};

    //Mengisi segitiga dengan warna kuning
    svgGenerator.setPaint(Color.yellow);
    svgGenerator.fill(new Polygon(x,y,x.length));
    
    //Mewarnai garis batas dengan ketebalan 3 pixel  
    svgGenerator.setPaint(Color.black);
    svgGenerator.setStroke(new BasicStroke(3.0f));
    svgGenerator.draw(new Polygon(x,y,x.length));

    //Menulis Teks
      Font font = new Font("Serif", Font.PLAIN, 25);    
      FontMetrics metrics = svgGenerator.getFontMetrics(font);      
      svgGenerator.setFont(font);      
      
    svgGenerator.setPaint(Color.MAGENTA);
      svgGenerator.drawString("KursusInternet.com"
                       (400-metrics.stringWidth("KursusInternet.com"))/230
                    );    
      
    //Mengarahkan SVG stream ke output berupa file dengan nama segitiga.svg
    FileWriter out = new FileWriter("c:/kursusinternet.com/segitiga.svg");    
    svgGenerator.stream(out, true);    
    out.close();
  }
}

Hasil Konversi Dibuka dengan Aplikasi Inkscape


Sumber Referensi

ą
Editor KursusInternet,
Oct 1, 2011, 8:38 PM
Comments