tamaño insertar incrustar imagen iconos con como color cargar cambiar php svg dimensions

insertar - ¿Cómo se obtiene el ancho y alto de una imagen SVG en PHP?



insertar svg con css (3)

Intenté usar getimagesize() en un archivo SVG, pero falló.

Sé que SVG es "Scalable Vector Graphics", pero creo que los "Elementos de revisión" de Google Chrome pueden obtener perfectamente las dimensiones de una imagen SVG, así que sospecho que esto también es posible en PHP.

Si es difícil obtener las dimensiones, ¿hay alguna manera de juzgar si una imagen SVG es vertical u horizontal?


¡Un SVG es simplemente un archivo XML, por lo que las libs de GD no serán de ninguna ayuda!

Simplemente debería poder analizar el archivo XML para obtener tales propiedades.

$xml = '' <svg width="500" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <rect x="90" y="10" width="400" height="280" style="fill: rgb(255,255,255); stroke: rgb(0,0,0); stroke-width: 1; " /> </svg>''; $xmlget = simplexml_load_string($xml); $xmlattributes = $xmlget->attributes(); $width = (string) $xmlattributes->width; $height = (string) $xmlattributes->height; print_r($width); print_r($height);

Los valores deben emitirse o devolverán un objeto.


Tenía la misma pregunta porque no pude encontrar una respuesta, inventé y resolví de la siguiente manera:

<?php $svgfile = simplexml_load_file("svgimage.svg"); $width = substr($svgfile[width],0,-2); $height = substr($svgfile[height],0,-2); ?>

Tenga en cuenta que el archivo SVG que utilicé se creó en Adobe Illustrator. Entonces, el código svg de la imagen comienza de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="400px" height="738px" viewBox="0 0 400 738" enable-background="new 0 0 400 738" xml:space="preserve"> ...

Gracias a esto, pude obtener valores de ancho y alto.

Y uso substr porque $svgfile[width] devuelve el valor con el sufijo "px". También podría usar el valor viewBox y dividirlo para obtener los valores.

Saludos desde Santiago, Chile


Lo que pasa es que las imágenes SVG no tienen un "tamaño" en el sentido en que probablemente estés pensando. Por otro lado, SI tienen una relación altura / ancho.

Esta relación generalmente se puede encontrar en el atributo viewBox .

Si, por otro lado, el atributo viewBox no está presente en el elemento SVG raíz, la relación de la imagen no es muy trivial para determinar.

Editar:

Nota al margen: la razón por la que Chrome te da coordenadas perfectas no es necesariamente porque se ve en el SVG para determinar el tamaño; podría ser un simple resultado de establecer el tamaño.

Aunque el elemento SVG tiene atributos de height y width , estos pueden no especificarse como píxeles, sino como una cantidad de unidades, por lo que no son necesariamente de mucha ayuda.