4 votos

Redimensionar archivos .svg por lotes

Tengo una carpeta (original_svg_files) con más de diez mil archivos .svg de diferentes tamaños y necesito redimensionar cada uno de ellos. El nombre debe ser el mismo que el archivo .svg original y el lado más largo debe ser de 150px y también necesito mantener la relación de aspecto (restringir las proporciones).

He intentado utilizar Adobe Illustrator para hacerlo pero no consigo averiguar cómo ya que sólo admite la transformación mediante un porcentaje. ¡Necesito automatizar este proceso por la línea de comandos o Automator ya que lo que estoy haciendo ahora es realmente mucho tiempo!

Estoy utilizando OS X El Capitan versión 10.11.1.

¿Alguna sugerencia?

2voto

Jared Tritsch Puntos 2754

Parece que la opción -fit de esta utilidad de línea de comandos hará exactamente lo que quieres:

https://github.com/vieron/svg-resizer

Si necesitas ayuda con la cerveza, mira aquí: http://coolestguidesontheplanet.com/installing-homebrew-os-x-yosemite-10-10-package-manager-unix-apps/

Si no te sientes cómodo con la línea de comandos, no dejes que te intimide: en realidad no es tan difícil. Envía un mensaje si te quedas atascado o algo no tiene sentido.

0voto

Matt Puntos 303

Estoy bastante seguro de que puedes usar ImageMagick para hacer lo que necesitas. Hay un paquete homebrew para Imagemagick (homebrew es el equivalente para Mac de apt-get). Así que después de una rápida:

brew install imagemagick

Deberías poder utilizar las utilidades de línea de comandos para ello. Parece que el comando convertir debería hacer el cambio de tamaño con la escala proporcional que desea.

convert oldimage.svg -resize "150>" oldimage.svg

Este comando dice que se encoja la imagen para que el lado más largo sea 150. El resto es sólo el uso de secuencias de comandos de shell estándar para obtener el efecto deseado.

1 votos

Esto me ha roto el formato SVG. Añade etiquetas xml y doctype y la imagen ya no se muestra correctamente en un navegador web.

1 votos

Esto rasteriza el svg

0voto

isnoquest Puntos 1

Dunno si esto funciona para mac shell también, pero escribí el siguiente bash script basado en la información sobre la Foro de Inkscape :

Básicamente toma todos los archivos svg y busca los atributos viewbox del svg, añadiendo anchura y altura y una envoltura de grupo para cambiar el tamaño/escala de los elementos originales.

#!/bin/bash

for folder in $(ls -d [A-Z]*);
do 
  echo "$folder";
  mkdir -p resized/$folder; 
  for svgfile in $(ls $folder/*); 
  do 
    echo "$svgfile"; 
    cat "$svgfile" | \
      sed 's/viewBox="0 0 161.9 162" enable-background="new 0 0 161.9 162" xml:space="preserve">/width="41px" height="41px" viewBox="0 0 41 41" enable-background="new 0 0 41 41" xml:space="preserve">\n<g transform="scale(0.25)">/g' | \
      sed 's/<\/svg>/<\/g>\n<\/svg>/g' \
      > resized/$svgfile;
  done;
done

Depende de si todos tus archivos svg utilizan la misma caja de vista original, la mía sí.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X