]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ux/src/org/argeo/cms/media/SvgToPng.java
Improve documentation.
[lgpl/argeo-commons.git] / org.argeo.cms.ux / src / org / argeo / cms / media / SvgToPng.java
1 package org.argeo.cms.media;
2
3 import java.io.IOException;
4 import java.io.OutputStream;
5 import java.io.Reader;
6 import java.nio.file.Files;
7 import java.nio.file.Path;
8 import java.nio.file.Paths;
9
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
16 public class SvgToPng {
17
18 public void convertSvgDir(Path sourceDir, Path targetDir, int width) {
19 System.out.println("##\n## " + width + "px - " + sourceDir + "\n##");
20 try {
21 if (targetDir == null)
22 targetDir = sourceDir.getParent().resolve(Integer.toString(width));
23 Files.createDirectories(targetDir);
24
25 PNGTranscoder transcoder = new PNGTranscoder();
26 // transcoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR,
27 // Color.WHITE);
28 transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, (float) width);
29 transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, (float) width);
30
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);
36 }
37 } catch (IOException | TranscoderException e) {
38 throw new IllegalStateException("Cannot convert from " + sourceDir + " to " + targetDir, e);
39 }
40
41 }
42
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);
51 }
52 }
53
54 public static void main(String[] args) throws Exception {
55
56 Path path = Paths.get(args[0]);
57
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);
63 }
64 }