我有一个用 SVG 表示的圆圈:
<circle cx="50" cy="50" r="50" stroke="black" stroke-width="1" style="fill:white"/>
然后我将此圆转换为 Java 中的 BufferedImage,宽度和高度 = 100,imageType = BufferedImage.TYPE_INT_ARGB。然后我通过以下代码将此 BufferedImage 绘制到另一个上:
BufferedImage source = ImageIO.read(new File("imgToDrawOnto.png"));
Graphics g = source.getGraphics();
g.drawImage(circleImg, 100, 100, null);
其中 circleImg 是 SVG 圆的 BufferedImage。这工作正常并绘制到图像上,但是它非常像素化。有什么办法可以让圆更平滑吗?我宁愿继续使用 SVG,但如果 SVG 没有办法,也可以考虑其他方式。
我尝试过的事情:
- 我已将圆的半径设置为 500,并将 BufferedImage 的高度和宽度设置为 100。
- 我已将 BufferedImage 的高度和宽度设置为 1000,并使用 draw 方法将高度和宽度作为参数并将它们设为 100。
- 我同时做了1和2。
- 我也尝试过使半径更大,即。2500
- 我还将 circleImg 参数更改为 circleImg.getScaledInstance(100, 100, 1)
没有任何效果。有些看起来更平滑,但不是很多,有些看起来更糟。另外需要注意的是,我在使用 g.drawOval(150, 150, 100, 100) 时也观察到像素化。这让我相信问题不在于 SVG,但我可能错了。
Java版本:
java版本“1.6.0_30” Java SE 运行时环境(内部版本 1.6.0_30-b12) Java HotSpot 64 位服务器 VM(内部版本 20.5-b03,混合模式)
对于 SVG,我使用的是 SVG-Salamander v1.0