2010-06-14 18 views
8

Tengo 2 archivos SVG que necesito superponer usando Batik. Un archivo sirve como imagen de fondo y mide 308px por 308px, mientras que el segundo archivo (260px por 260px) es la imagen de primer plano que debe estar centrada (que está en el centro de la imagen de fondo). Me gustaría que el resultado de la operación se guarde en un tercer archivo SVG. Si está familiarizado con Batik, agradecería sus sugerencias.¿Cómo superpongo una imagen SVG a otra usando Apache Batik?

Gracias,

Olivier.

Respuesta

8

Si no es necesario incluir el contenido de los antecedentes y documentos de primer plano en la final, se puede usar simplemente referencia a ellos:

<svg xmlns='http://www.w3.org/2000/svg' 
    xmlns:xlink='http://www.w3.org/1999/xlink' 
    width='308' height='308' viewBox='0 0 308 308'> 
    <image xlink:href='background.svg' width='308' height='308'/> 
    <image xlink:href='foreground.svg' x='24' y='24' width='260' height='260'/> 
</svg> 

Debe ser fácil de construir este documento usando el DOM . Consulte here para ver un ejemplo del uso de las API DOM para construir un documento.

Si necesita combinar los dos documentos en uno solo, entonces usted podría:

  • dejar que un = Document la resultante de parsing background.svg
  • vamos b = la resultante de Document analizar foreground.svg
  • vamos e = a.importNode(b.getDocumentElement(), true)
  • establezca las x y y atributos de e a "24"
  • llamada a.getDocumentElement().appendChild(e)

ahora un es un documento con el contenido del primer plano se fusionaron en.

Cuestiones relacionadas