Batik是使用svg格式图片来实现各种功能的应用程序以及Applet提供的一个基于java的工具包,可以使用Batik把SVG转换为图片。
Batik的project link是http://xmlgraphics.apache.org/batik/,我下载的是1.7。
新建一个Java工程,把Batik解压后的目录中的batik.jar, batik-rasterizer.jar,batik-slideshow.jar,batik-squiggle.jar,batik-svgpp.jar,batik-ttf2svg.jar加入到工程的classpath中,把batik-1.7/lib目录下的所有Jar包都加入到工程的classpath中,再把batik-1.7\extensions目录下的所有jar包都加入到工程的classpath中。
写一段测试程序如下:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.PNGTranscoder;
public class BatickSVGTest {
public static void main(String[] args) {
//svg文件的路径
String svgFileName = "d:\\svg_code.txt";
File svgFile = new File(svgFileName);
FileOutputStream outputStream = null;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(svgFile);
byte[] buf = new byte[4096];
int len = 0;
while ((len = fis.read(buf)) != -1) {
baos.write(buf, 0, len);
}
String svgCode = new String(baos.toByteArray());
System.out.println("svgCode:" + svgCode);
String pngFilePath = "d:\\PNG.png";
File file = new File(pngFilePath);
file.createNewFile();
outputStream = new FileOutputStream(file);
convertSVGToPng(svgCode, outputStream);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
}
}
}
public static void convertSVGToPng(String svgCode, OutputStream outputStream) {
try {
byte[] bytes = svgCode.getBytes("utf-8");
PNGTranscoder t = new PNGTranscoder();
TranscoderInput input = new TranscoderInput(new ByteArrayInputStream(bytes));
TranscoderOutput output = new TranscoderOutput(outputStream);
t.transcode(input, output);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
}
}
}
}
准备好一段svg的源文件,d:\\svg_code.txt,输出的文件为d:\\PNG.png,现在就可以测试了。