1 package org
.argeo
.cms
.media
;
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
;
15 import org
.apache
.commons
.io
.FilenameUtils
;
17 public class SvgToPng
{
19 public void convertSvgDir(Path sourceDir
, Path targetDir
, int width
) {
20 System
.out
.println("##\n## " + width
+ "px - " + sourceDir
+"\n##");
22 if (targetDir
== null)
23 targetDir
= sourceDir
.getParent().resolve(Integer
.toString(width
));
24 Files
.createDirectories(targetDir
);
26 PNGTranscoder transcoder
= new PNGTranscoder();
27 // transcoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR,
29 transcoder
.addTranscodingHint(PNGTranscoder
.KEY_WIDTH
, (float) width
);
30 transcoder
.addTranscodingHint(PNGTranscoder
.KEY_HEIGHT
, (float) width
);
32 for (Path source
: Files
.newDirectoryStream(sourceDir
, "*.svg")) {
33 String baseName
= 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);