In Inkscape, ridimensiona contemporaneamente sia il documento che il suo contenuto


25

Ho faticato a fare qualcosa che sembrerebbe piuttosto semplice:

In Inkscape, come posso ridimensionare il documento e il suo contenuto (cioè i disegni) contemporaneamente?

Un po 'di contesto: voglio ridimensionare un numero abbastanza grande di documenti SVG da The Noun Project (in genere sono documenti 100x100px) senza dover ridimensionare esplicitamente i disegni reali.

NB: Se esiste una soluzione a riga di comando, posso lavorare anche con quella!


Non sono sicuro del tuo obiettivo finale, ma AFAIK, l'area del documento è alquanto arbitraria a parte la stampa, dove hai la possibilità di stampare solo l'area del documento. Tuttavia, puoi anche stampare solo l'area dell'oggetto, quindi potrebbe essere un modo per aggirare l'ostacolo.
DA01

@ DA01 Penso che il documento sia piuttosto utile quando esporti in Bitmap (che è quello che sto facendo).
julien_c,

A proposito, c'è un modo per ridimensionare un oggetto che non comporta il trascinamento degli angoli, ma dove si specifica esplicitamente una dimensione? Potrebbe essere quello che sto
cercando

1
anche allora è un'opzione arbitraria. Puoi disegnare facilmente una casella contenente come la tua 'zona' di esportazione. In effetti, è così che di solito preferisco farlo. Per quanto riguarda il ridimensionamento, è possibile selezionare gli oggetti e quindi a) utilizzare la barra di stato in alto e digitare le modifiche alle dimensioni oppure b) andare su OGGETTO> TRASFORMA e immettere i valori nel pallet Trasforma
DA01

@julien_c: Penso che il punto qui sia che gli oggetti sono arte vettoriale diritta e non hanno dimensioni in fino a quando non li si emette su un dispositivo (o file) raster. La loro dimensione (pollici, pixel, cubiti) è, in effetti, irrilevante.
horatio

Risposte:


24

Non hai menzionato il sistema operativo in esecuzione. Sto usando Ubuntu e sono stato in grado di usare librsvg2 con successo.

Se hai accesso a Ubuntu, ecco cosa puoi fare. Innanzitutto, installa librsvg2:

sudo apt-get install librsvg2-bin

Quindi, cdnella directory che ha i tuoi SVG (assicurati che abbia solo SVG!) E usa un comando come il seguente:

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/new.svg/')"
    rsvg-convert "$old" -w 160 -h 160 -f svg -o "$new"
done

Ciò creerà un nuovo batch di SVG con dimensioni 200px per 200px e salvato come "nome-file-originale.new.svg"

Il calcolo delle dimensioni è alquanto confuso. Per convertire SVG in SVG, devi fare un po 'di matematica. Le opzioni "altezza" e "larghezza" in rsvg-convert usano pt, non px, in questi casi, quindi usa 80 se vuoi 100px, 120 se vuoi 150px e così via.

Puoi anche usare rsvg-convert per generare PNG. È molto meglio nel rasterizzare il file di ImageMagick, almeno nella mia esperienza. Si noti che è necessario passare -fa png, è necessario modificare il modello di salvataggio dell'output da 's/svg$/new.svg/'a 's/svg$/png/'e immettere la larghezza e l'altezza desiderate come valori di pixel.

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/png/')"
    rsvg-convert "$old" -w 200 -h 200 -f png -o "$new"
done

A proposito, sto solo supponendo che sia necessario farlo in modalità batch per un gran numero di SVG. Altrimenti, puoi ancora usare il rsvg-convertcome tale: rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svgche prenderà un file sorgente chiamato "nome_programma_1576" e lo inclinerà a 400 pixel per 200 pixel e lo rinominerà "nome_programma_1576-inclinato".
Ananda Mahto,

@julien_c, appena seguito: hai provato questo suggerimento e hai avuto fortuna con esso?
Ananda Mahto,

Copia e incolla il codice nel terminale ma restituisci sed: -e espressione # 1, carattere 14: comando 's' non corretto Argomento mancante per -o ... Qualsiasi suggerimento
raphie

Ho cambiato `in" e ora sto ricevendo Errore durante il salvataggio nel file: echo svgfile.svg | sed -e 's / svg $ / 2.svg'
raphie

Fantastico - sarà ancora meglio quando librsvgil bug di
flusso del

7

Al momento non esiste un modo nativo per farlo in Inkscape. L'unico modo è ridimensionare il contenuto e il documento separatamente.


2

Mentre ci sono alcuni modi per farlo - come notato qui - un modo che può funzionare davvero bene è usare a viewBox. È sufficiente modificare il contenuto del tag SVG in questo modo:

<svg
 width="1280"
 height="800"
 viewBox="0 0 1280 800">
    <!-- More markup... --!>
</svg>

Ciò viewBoxche definisce è un sistema di coordinate interno per il documento. È quindi possibile ridimensionare facilmente il documento semplicemente modificando gli attributi widthe, heightse necessario.

Si noti che ci sono alcuni svantaggi, tuttavia. Per prima cosa, ci sono solo alcuni contesti in cui funziona, in particolare se in qualche modo includi direttamente il documento SVG nella tua pagina di markup. L'uso di un <img>tag con questo può o meno produrre risultati imprevisti. Dovrai fare alcune delle tue ricerche per capire come farlo al meglio.


2
Questo non funziona per me e non capisco perché. Se modifico la larghezza e l'altezza ma lascio il viewBox così com'è: quando Chrome esegue il rendering del file svg non elaborato, mostra solo una piccola parte del contenuto. Quando Inkscape lo rende, mostra l'intero contenuto, ma è molto più grande della pagina, che è la stessa porzione piccola (in alto a sinistra) mostrata da Chrome. Quindi, nel complesso: il contenuto non viene ridimensionato in base alle coordinate della viewbox. Il mio SVG contiene diversi elementi svg figlio, ma sono tutti trasformati in base (presumo) alle coordinate della viewbox.
CPBL,

Ha funzionato per me in Inkscape 0.92.3, Firefox 66 e Chromium 73.
Socowi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.