代码:
/**
* 将wmf图片转成jpg图片
*
* @param filePath
* @throws Exception
*/
public static String wmfToJpg(String wmfPath) throws Exception {
File wmf = new File(wmfPath);
FileInputStream wmfStream = new FileInputStream(wmf);
ByteArrayOutputStream imageOut = new ByteArrayOutputStream();
int noOfByteRead = 0;
while ((noOfByteRead = wmfStream.read()) != -1) {
imageOut.write(noOfByteRead);
}
imageOut.flush();
WMFTranscoder transcoder = new WMFTranscoder();
TranscodingHints hints = new TranscodingHints();
hints.put(ImageTranscoder.KEY_WIDTH, 20f);
hints.put(ImageTranscoder.KEY_HEIGHT, 20f);
transcoder.setTranscodingHints(hints);
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(
imageOut.toByteArray()));
ByteArrayOutputStream svg = new ByteArrayOutputStream();
TranscoderOutput output = new TranscoderOutput(svg);
transcoder.transcode(input, output);
String svgFile = StringUtils.replace(wmfPath, "wmf", "svg");
FileOutputStream fileOut = new FileOutputStream(svgFile);
fileOut.write(svg.toByteArray());
fileOut.flush();
PNGTranscoder it = new PNGTranscoder();
ByteArrayOutputStream jpg = new ByteArrayOutputStream();
it.transcode(new TranscoderInput(new ByteArrayInputStream(svg.toByteArray())),new TranscoderOutput(jpg));
String jpgFile = StringUtils.replace(wmfPath, "wmf", "jpg");
FileOutputStream jpgOut = new FileOutputStream(jpgFile);
jpgOut.write(jpg.toByteArray());
jpgOut.flush();
return null;
}
错误:
Exception in thread "main" org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
2 字节的 UTF-8 序列的字节 2 无效。
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
at com.cets.service.ReadWordByStream.wmfToJpg(ReadWordByStream.java:227)
at com.cets.service.ReadWordByStream.getContent(ReadWordByStream.java:91)
at com.cets.service.ReadWordByStream.main(ReadWordByStream.java:160)