単に SVG を PNG に変換したいだけならば、 たとえば inkscape コマンドがあれば簡単にできる。 ただ、今回は諸事情により 画像変換だけでなく、さまざまな加工処理を連続して行いたかったので、 Groovy でそれらをまとめて処理することにした。
なんやかんやの部分は長くなるので省きますが、SVG から PNG に変換するには以下の 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 )