Created
November 6, 2019 08:32
-
-
Save sergmain/1cef9921c5d7b44b2ebb53795f63f54b to your computer and use it in GitHub Desktop.
Transform WMF -> SVG -> Jpeg with Batik
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package images; | |
import org.apache.batik.transcoder.TranscoderException; | |
import org.apache.batik.transcoder.TranscoderInput; | |
import org.apache.batik.transcoder.TranscoderOutput; | |
import org.apache.batik.transcoder.image.ImageTranscoder; | |
import org.apache.batik.transcoder.image.JPEGTranscoder; | |
import org.apache.batik.transcoder.wmf.tosvg.WMFHeaderProperties; | |
import org.apache.batik.transcoder.wmf.tosvg.WMFTranscoder; | |
import org.apache.commons.codec.binary.Base64; | |
import org.apache.commons.io.IOUtils; | |
import java.io.*; | |
import java.util.zip.GZIPInputStream; | |
public class ImageBase64 { | |
public static final String BASE64 = "H4sIAAAAAAAEC71UTWgTQRR+M7uJbZqSn8aDv02Leij99eBBqGTzoy0lpTSBekuTuNaF7qY0lRo8\n" + | |
"KK1IESGePRVvgnjqQaGHSNGTorfi2atQsVtEBeP3drdUxR6k4OzOmzfvzbxv5s17b/PNq4fktNX2\n" + | |
"hNrSyuzXKUFglLeSSKUNR+sDlUKAMidks9l0uH5xxJO1YbWrDcqEutrehtkZf4iClC0uXMvX5nSi\n" + | |
"TxT1pEcJFppEYcwb4J6jT7cDWyFqgewbrHVgRJMqSB+gGTkmSX5RmOsA98TPXCsjS1f7TsR8xzH9\n" + | |
"LrthndsDPjT0FM4bpl6Nj+uL8cmKWbTo2dPtxRfo8cTOYsp3ddvFETgx0dkAb8JhyDQsekwXaF24\n" + | |
"CBtSlQdDkPAqfAFvsrtdJD6kUdvF2FJWD3wLF0Pui2GKkOre4/YPgKP9q6f2u0eyRs4LxeS0PE8H\n" + | |
"wxCer6QTDa6vOD4mS0ODg2OlXinu+BvUoI8iJhp4MPeN7iuP/sPdXnpx8Jv/BEdarmaWKrNEVmdg\n" + | |
"69T76L6RtvtGQdxoL+KG19ZWTqhJhRTOPc6hm0Kbm6tmL6ZSgvIIFe5pvWrMWPFc2dCtst4bH7XK\n" + | |
"/eQT5G9N57L5c0iQKcPSZmeTxapRTlWu6BPFGb1KEd+faRBRvONGfKnK9XlDn+ccoYiazcczNxbm\n" + | |
"i0jalq6BTD09oE3Y4dClgjbxufMk+MMhjeyMfdquJwvgwqEUD/WM3VMYseuOJIHx1ghUWk8hXcjY\n" + | |
"/GuhoCD+kMH4BBJBwQzOCLBseZJJCbJjRG2OxEDJERSQ6t1hGlYIpcURJ/fWyCUTu5YMJpaz2jP2\n" + | |
"yxpWsx3gwNImrUlaGcKGlUGPeMLlMcyXSyBLvVhMXAr4FQJOzeL9ezXKmYDwS/YJ6UV7mA45inWu\n" + | |
"TK+FlN25WnVBN4m4zrDFLrrnGOIqePlD1NuveNHODvl7G9fGR38CJwBmsbQFAAA=\n"; | |
public static void main(String[] args) throws IOException, TranscoderException { | |
final byte[] bytes = Base64.decodeBase64(BASE64); | |
ByteArrayInputStream bais = new ByteArrayInputStream(bytes); | |
GZIPInputStream gis = new GZIPInputStream(bais); | |
File data = new File("data", "08000002.wmf"); | |
System.out.println("file: " + data.getAbsolutePath()); | |
FileOutputStream fos = new FileOutputStream(data); | |
IOUtils.copy(gis, fos); | |
WMFHeaderProperties prop = new WMFHeaderProperties(data); | |
TranscoderInput input = new TranscoderInput(new FileInputStream(data)); | |
File svg = new File("data", "08000002.svg"); | |
System.out.println("file: " + svg.getAbsolutePath()); | |
OutputStream stream = new FileOutputStream(svg); | |
TranscoderOutput output = new TranscoderOutput(stream); | |
WMFTranscoder transcoder = new WMFTranscoder(); | |
// transcoder.addTranscodingHint(WMFTranscoder.KEY_WIDTH, 2560f); | |
transcoder.addTranscodingHint(WMFTranscoder.KEY_INPUT_WIDTH, prop.getWidthBoundsPixels()); | |
transcoder.addTranscodingHint(WMFTranscoder.KEY_INPUT_HEIGHT, prop.getHeightBoundsPixels()); | |
transcoder.addTranscodingHint(WMFTranscoder.KEY_XOFFSET, prop.getXOffset()); | |
transcoder.addTranscodingHint(WMFTranscoder.KEY_YOFFSET, prop.getYOffset()); | |
transcoder.transcode(input,output); | |
ImageTranscoder it = new JPEGTranscoder(); | |
ByteArrayOutputStream jpg = new ByteArrayOutputStream(); | |
it.transcode(new TranscoderInput(new FileInputStream(svg)), new TranscoderOutput(jpg)); | |
File jpgFile = new File("data", "08000002.jpg"); | |
IOUtils.write(jpg.toByteArray(), new FileOutputStream(jpgFile)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment