我正在使用以下代码摄取 AWT 图像(来自 PDF,通过 PDFBox):
private java.awt.Graphics2D graphics;
public void drawImage(java.awt.Image awtImage, java.awt.geom.AffineTransform at) {
graphics.setComposite(getGraphicsState().getStrokeJavaComposite());
graphics.setClip(getGraphicsState().getCurrentClippingPath());
graphics.drawImage( awtImage, at, null );
}
并希望将图像捕获/输出为 SVG。我一直在使用产生 svg 形式的 Batik 库
<image x="0" y="0" transform="matrix(0.144,0,0,0.1439,251.521,271.844)"
clip-path="url(#clipPath2)" width="1797" xlink:href="data:image/png;
base64,iVBORw0KGgoAAAANSUhEUgAABwUAAAV4CAMAAAB2DvLsAAADAFBMVEX////+/v56
enpWVlZbW1taWlpZWVnHx8eRkZFVVVWMjIysrKxXV1dYWFhqamr5+fnMzMxeXl7c
3NyUlJR/f3+3t7cAAACGhob29vYpKSliYmJPT083Nzf8/PyBgYENDQ3s7OwwMDD1
...
RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE
RPQP/R8CiIK+y8Q6KQAAAABJRU5ErkJggg==" height="1400"
preserveAspectRatio="none" stroke-width="0" xmlns:xlink="http://www.w3.org/1999/xlink"/>
我有自己的 SVG 库,并且想向我的 SVGImage 类添加方法以产生类似的东西。我是否需要将 AffineTransformation 应用于数据,如果需要,如何?
如果有人指出可以做到这一点的适当(F/OSS)方法或库,我将不胜感激。数据应该是内联的(如上例所示)并且符合 XML。
更新:在没有任何答案或评论的情况下,我不得不编写自己的实现。这不是完全微不足道的,可能不是健壮的或最好的解决方案。我将其附加为答案-如果它有缺陷或可以改进,请发表评论。