1 package org
.argeo
.app
.swt
.osgi
;
3 import java
.io
.IOException
;
4 import java
.io
.OutputStream
;
6 import java
.nio
.file
.Files
;
7 import java
.nio
.file
.Path
;
8 import java
.nio
.file
.Paths
;
10 import org
.apache
.batik
.transcoder
.TranscoderException
;
11 import org
.apache
.batik
.transcoder
.TranscoderInput
;
12 import org
.apache
.batik
.transcoder
.TranscoderOutput
;
13 import org
.apache
.batik
.transcoder
.image
.ImageTranscoder
;
14 import org
.apache
.batik
.transcoder
.image
.PNGTranscoder
;
16 public class SvgToPng
{
18 public void convertSvgDir(Path sourceDir
, Path targetDir
, int width
) {
19 System
.out
.println("##\n## " + width
+ "px - " + sourceDir
+ "\n##");
21 if (targetDir
== null)
22 targetDir
= sourceDir
.getParent().resolve(Integer
.toString(width
));
23 Files
.createDirectories(targetDir
);
25 PNGTranscoder transcoder
= new PNGTranscoder();
26 // transcoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR,
28 transcoder
.addTranscodingHint(PNGTranscoder
.KEY_WIDTH
, (float) width
);
29 transcoder
.addTranscodingHint(PNGTranscoder
.KEY_HEIGHT
, (float) width
);
31 for (Path source
: Files
.newDirectoryStream(sourceDir
, "*.svg")) {
32 // FIXME extract base name
33 String baseName
= null; // = FilenameUtils.getBaseName(source.toString());
34 Path target
= targetDir
.resolve(baseName
+ ".png");
35 convertSvgFile(transcoder
, source
, target
);
37 } catch (IOException
| TranscoderException e
) {
38 throw new IllegalStateException("Cannot convert from " + sourceDir
+ " to " + targetDir
, e
);
43 protected void convertSvgFile(ImageTranscoder transcoder
, Path source
, Path target
)
44 throws IOException
, TranscoderException
{
45 try (Reader reader
= Files
.newBufferedReader(source
); OutputStream out
= Files
.newOutputStream(target
);) {
46 TranscoderInput input
= new TranscoderInput(reader
);
47 // BufferedImage image = transcoder.createImage(32, 32);
48 TranscoderOutput output
= new TranscoderOutput(out
);
49 transcoder
.transcode(input
, output
);
50 System
.out
.println(source
.getFileName() + " -> " + target
);
54 public static void main(String
[] args
) throws Exception
{
56 Path path
= Paths
.get(args
[0]);
58 SvgToPng svgToPng
= new SvgToPng();
59 svgToPng
.convertSvgDir(path
, null, 16);
60 svgToPng
.convertSvgDir(path
, null, 32);
61 svgToPng
.convertSvgDir(path
, null, 64);
62 svgToPng
.convertSvgDir(path
, null, 96);