batik 怎么获取SVG图片的高宽?

wmlgl 发布于 2013/09/03 18:01
阅读 900
收藏 0
请教用过batik的同学,我要做一个将svg转png的程序,但转换后png的高度和宽度都不对,有部分图片被隐藏了,指定高度和宽度可以完整的显示,但太麻烦了,有没有方法获取svg图片的高度和宽度 我没找到,谢谢了.
加载中
0
guhanjie
guhanjie
SVGGraphics2D svgGenerator = new SVGGraphics2D(document);
svgGenerator.setSVGCanvasSize(new Dimension(500, 500));//设置SVG画布的长宽
guhanjie
guhanjie
回复 @吕晓东 : 光看题目就想等标准答案,提问者写了标题,但也对问题进行了描述:SVG转PNG,部分图片被隐藏,明显是SVG像素尺寸与导出PNG图片高宽不一致造成的,我给的答案虽不够详细也不一定能解决他的问题,但也希望能给他一些思路:先设置或获取SVG尺寸,以保证SVG和PNG尺寸一致,这样也从另一方面能够获取SVG图片高宽。 我觉得在喷人之前,最好自己先找到一个解决方案,不然显得很无知和无聊。
吕晓东
吕晓东
无语了简直,你有没有看人家问的什么啊,在这乱答题
0
n
nxvssk

虽然这是几年前的帖子,但是没有回答真的是操蛋,搞的查了很久的文档,现贴上答案供大家学习

要保证绘制SVG矢量图和转换出的PNG或PDF大小一致,不出现截断,留白边等情况,需要保证SVG宽度和高度与转换时的宽度和高度一致。

以现有SVG文件载入进行裁剪为例
JSVGCanvas svgCanvas = new JSVGCanvas();
svgCanvas.setURI(new File("C:/Users/NIEXIN/Desktop/Test.svg").toURI().toString());
SVGDocument svgDocument = svgCanvas.getSVGDocument();
SVGGraphics2D graphics = new SVGGraphics2D(svgDocument);
graphics.fillRect(0, 0, 2450, 150);
在进行图片转换时,需要一个SVGAbstractTranscoder的实现类,可以是PDF,也可以是PNG,自己找,此处以PNG为例
PNGTranscoder tr = new PNGTranscoder();
tr.addTranscodingHint(PNGTranscoder.KEY_WIDTH, new Float(2450.0));
tr.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, new Float(150.0));

返回顶部
顶部