]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ux/src/org/argeo/cms/media/SvgToPng.java
Move JNI from Argeo Commons to Argeo SLC
[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 import org.apache.commons.io.FilenameUtils;
16
17 public class SvgToPng {
18
19 public void convertSvgDir(Path sourceDir, Path targetDir, int width) {
20 System.out.println("##\n## " + width + "px - " + sourceDir+"\n##");
21 try {
22 if (targetDir == null)
23 targetDir = sourceDir.getParent().resolve(Integer.toString(width));
24 Files.createDirectories(targetDir);
25
26 PNGTranscoder transcoder = new PNGTranscoder();
27 // transcoder.addTranscodingHint(ImageTranscoder.KEY_BACKGROUND_COLOR,
28 // Color.WHITE);
29 transcoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, (float) width);
30 transcoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, (float) width);
31
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);
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 }