Sunday, January 6, 2019 / Groovy, SVG

Apache Batik SVG Toolkit による SVG から PNG への変換

単に SVG を PNG に変換したいだけならば、 たとえば inkscape コマンドがあれば簡単にできる。 ただ、今回は諸事情により 画像変換だけでなく、さまざまな加工処理を連続して行いたかったので、 Groovy でそれらをまとめて処理することにした。

なんやかんやの部分は長くなるので省きますが、SVG から PNG に変換するには以下の Groovy コードで事足りました。

foo.svg を foo.png にする svg2png.groovy

@Grab(group='batik', module='batik-transcoder', version='1.6-1')

import org.apache.batik.transcoder.TranscoderInput
import org.apache.batik.transcoder.TranscoderOutput
import org.apache.batik.transcoder.image.PNGTranscoder

def svgToPng = { svgFile, pngFile->
    def uri = svgFile.toURI()
    def input = new TranscoderInput(uri.toString())
    def outputStream = new FileOutputStream( pngFile )
    def output = new TranscoderOutput(outputStream)

    new PNGTranscoder().transcode(input, output)

    outputStream.close()
}

def svgFile = new File('foo.svg')
def pngFile = new File('foo.png')

svgToPng( svgFile, pngFile )