PendahuluanSVG (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 SVGpackage 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(400, 400)); //Gambar Segitiga int x[] = {50, 200, 350}; int y[] = {320, 50, 320}; //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"))/2, 30 ); //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 InkscapeSumber Referensi |
