Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/11/2005, à 15:49

stef09

convertir 'en masse' plusieurs images SVG en PNG

Voilà,

Je cherche un moyen d'importer pour Ooo les images d'Open Clipart Library (celles-ci déjà au format PNG et SVG, mais un peu trop petites, j'aimerai augmenter leur taille)

Je voudrais donc convertir en masse des images (en fait ce sont les images SVG d'Open Clipart Library) en utilisant la fonction Fichier/exporter en Bitmap d'Inkscape. Au passage on augmente la taille en faisant un export avec 600 px de large par exemple.

Y'a t'il un moyen de fabriquer un script qui fasse cette conversion (pour 8300 images env) pour un dossier (et sous-dossiers) d'image SVG. en utilisant Inkscape (ou autre ?).

Je sais pas si j'ai été bien clair... merci à vous.

Hors ligne

#2 Le 12/11/2005, à 22:28

LaTheix

Re : convertir 'en masse' plusieurs images SVG en PNG

Il est possible avec inkscape de faire du traitement par lot. Pour les commandes, un "man inkscape" sera fort utile ....

Un exemple de script:

#!/bin/bash

for file in `ls -R *.svg`
   do
      FILENAME=`basename $file .svg`
      EXTENSION=".png"
      echo "conversion svg->png de $file
      inkscape --file="$file" --export-png=$FILENAME$EXTENSION --export-width=600
  done

Je n'ai pas essayé le script puisque inkscape n'est pas installé sur ma machine mais cela devrait fonctionner. A essayer juste pour voir .... smile

Hors ligne

#3 Le 12/11/2005, à 23:39

stef09

Re : convertir 'en masse' plusieurs images SVG en PNG

merci, c'est le type de réponse que j'attendais...

j'ai essayé (ubuntu breezy):

j'ai crée un dossier 'dino' dans 'home' avec quelques images svg
j'ai crée un fichier un fichier svg.sh dans le dossier svg avec

#!/bin/bash

for file in `ls -R *.svg`
   do
      FILENAME=`basename $file .svg`
      EXTENSION=".png"
      echo "conversion svg->png de $file
      inkscape --file="$file" --export-png=$FILENAME$EXTENSION --export-width=600
  done

j'ai fait un chmod u+x svg.sh
j'ai essayé de lancer le script :

j'ai fait un # svg.sh dans mon dossier 'dino'
le terminal me répond :
bash: svg: command not found
???
ps : je débute sous linux...

Hors ligne

#4 Le 13/11/2005, à 14:58

LaTheix

Re : convertir 'en masse' plusieurs images SVG en PNG

j'ai fait un # svg.sh dans mon dossier 'dino'
le terminal me répond :
bash: svg: command not found
???

C'est normal ....
Le shell cherche les exécutables dans la variable $PATH (laquelle est visible par la commande "echo $PATH") et ton dossier "dino" n'y est pas inclus ...

Pour lancer un script, deux façons de faire :

depuis le répertoire dino:
    1°) sh sgv.sh (fonctionne avec un script exécutable ou pas)
    2°) ./svg.sh (fonctionne UNIQUEMENT si le script est exécutable, ce qui est le cas ici avec ton chmod u+x svg.sh)

Allez, courage smile

Hors ligne

#5 Le 14/11/2005, à 00:21

stef09

Re : convertir 'en masse' plusieurs images SVG en PNG

merci, ok pour lancer le script...

ça me répond

svg.sh: line 8: unexpected EOF while looking for matching `"'
svg.sh: line 10: syntax error: unexpected end of file

j'ai corrigé des petits guillemets


#!/bin/bash
for file in 'ls -R *.svg'
   do
      FILENAME='basename $file .svg'
      EXTENSION=".png"
      echo "conversion svg->png de" $file
      inkscape --file="$file" --export-png=$FILENAME$EXTENSION --export-width=600
  done

et là j'obtiens, un méchant

conversion svg->png de ls -R dino_architetto_francesc_01.svg dino_architetto_fra ncesc_02.svg dino_architetto_francesc_03.svg dino_architetto_francesc_04.svg din o_architetto_francesc_05.svg dino_architetto_francesc_06.svg dino_architetto_fra ncesc_07.svg dino_architetto_francesc_08.svg dino_architetto_francesc_09.svg din o_architetto_francesc_10.svg dinosauri_architetto_fra_01.svg dinosauri_architett o_fra_02.svg dinosauro_architetto_fra_01.svg dinosauro_architetto_fra_02.svg din osauro_architetto_fra_03.svg

** (inkscape:12724): WARNING **: Specified document ls -R *.svg cannot be opened  (is it valid SVG file?)

** (inkscape:12724): WARNING **: Specified document $file cannot be opened (is i t valid SVG file?)

** (inkscape:12724): WARNING **: Specified document .svg.png cannot be opened (i s it valid SVG file?)

(inkscape:12724): Gtk-CRITICAL **: gtk_main_quit: assertion `main_loops != NULL'  failed

Dernière modification par stef09 (Le 14/11/2005, à 00:33)

Hors ligne

#6 Le 14/11/2005, à 14:25

LaTheix

Re : convertir 'en masse' plusieurs images SVG en PNG

Bon, je vois le problème ....

Reprends le script original que je t'ai donné et rajoute un guillemet à la fin de la ligne commençant par echo (un oubli de ma part).

Je viens d'installer inkscape (pour essayer le script) plus trois fichiers svg dans un répertoire dino.
Voilà la sortie :

christian@Theixone:~/dino$
christian@Theixone:~/dino$ ls -al
total 1708
drwxr-xr-x   2 christian christian   4096 2005-11-14 13:57 .
drwxr-xr-x  75 christian christian   4096 2005-11-14 13:55 ..
-rw-r--r--   1 christian christian 220171 2005-11-14 13:53 bison_leif_lodahl_01.svg
-rw-r--r--   1 christian christian 705312 2005-11-14 13:53 crawfish1_ganson.svg
-rw-r--r--   1 christian christian 791719 2005-11-14 13:52 crawfish2_ganson.svg
-rw-r--r--   1 christian christian    236 2005-11-14 13:54 svg2png.sh
christian@Theixone:~/dino$
christian@Theixone:~/dino$
christian@Theixone:~/dino$ sh svg2png.sh
conversion svg->png de bison_leif_lodahl_01.svg
Background RRGGBBAA: ffffff00
Area 0:0:187,5:187,5 exported to 600 x 600 pixels (288 dpi)
Bitmap saved as: bison_leif_lodahl_01.png
conversion svg->png de crawfish1_ganson.svg
Background RRGGBBAA: ffffff00
Area 0:0:489:479,758 exported to 600 x 589 pixels (110,429 dpi)
Bitmap saved as: crawfish1_ganson.png
conversion svg->png de crawfish2_ganson.svg
Background RRGGBBAA: ffffff00
Area 0:0:391:539 exported to 600 x 827 pixels (138,107 dpi)
Bitmap saved as: crawfish2_ganson.png
christian@Theixone:~/dino$
christian@Theixone:~/dino$
christian@Theixone:~/dino$ ls -al
total 2196
drwxr-xr-x   2 christian christian   4096 2005-11-14 13:58 .
drwxr-xr-x  75 christian christian   4096 2005-11-14 13:55 ..
-rw-r--r--   1 christian christian 129842 2005-11-14 13:58 bison_leif_lodahl_01.png
-rw-r--r--   1 christian christian 220171 2005-11-14 13:53 bison_leif_lodahl_01.svg
-rw-r--r--   1 christian christian 145684 2005-11-14 13:58 crawfish1_ganson.png
-rw-r--r--   1 christian christian 705312 2005-11-14 13:53 crawfish1_ganson.svg
-rw-r--r--   1 christian christian 208287 2005-11-14 13:58 crawfish2_ganson.png
-rw-r--r--   1 christian christian 791719 2005-11-14 13:52 crawfish2_ganson.svg
-rw-r--r--   1 christian christian    236 2005-11-14 13:54 svg2png.sh
christian@Theixone:~/dino$

Comme tu peux le voir, le script fonctionne très bien .....


Pour info, il n'y a pas de problème avec ce que tu appelles des "petits guillements" (lignes 3 et 5 du script). Ce sont des back-quotes (AltGr è sur mon clavier) qui permettent de renvoyer le résultat d'une commande (dans notre cas, le résultat de la commande "ls" et celui de la commande "basename")

Le script (tel qu'il est là) doit se trouver dans le répertoire racine où se trouvent les fichiers à convertir. Si tu le veux disponnible pour chaque utilisateur et sur n'importe quel repertoire:
  --> crée le fichier svg2png avec le code modifié (et corrigé smile) donné plus bas
  --> sudo chown root\: svg2png
  --> sudo chmod 755 svg2png
  --> sudo mv svg2png /usr/local/bin

#!/bin/bash

for file in `ls -R $1/*.svg`
   do
      FILENAME=`basename $file .svg`
      EXTENSION=".png"
      echo "conversion svg->png de $file"
      inkscape --file="$file" --export-png=$FILENAME$EXTENSION --export-width=600
  done

Maintenant, tu peux faire depuis ton répertoire :

--> svg2png dino    ..... et ça roule !

++

Hors ligne

#7 Le 18/11/2005, à 22:16

stef09

Re : convertir 'en masse' plusieurs images SVG en PNG

Ouf, après qq jours, je reviens à la charge,
j'espère LaTheix que je ne vais pas t'énerver avec ceci :
Le script fonctionne, mais ...
- les images transformées se mettent au même niveau du dossier dont j'ai engagé la transformation (je préfèrerais qu'elles restent dans le même repertoire)
- les images qui sont dans des sous-répertoires ne sont pas transformées
- pendant la réalisation du script, j'ai un "** (inkscape:13105): WARNING **: Unimplemented style property SP_PROP_CLIP_RULE: value: evenodd" peut-être du à ma config personnelle..

merci en tout cas

Hors ligne

#8 Le 04/02/2008, à 09:36

Yaen

Re : convertir 'en masse' plusieurs images SVG en PNG

autrement y a un script nautilus.


Je joue à HL2, CSS, Stalker... avec mon pingouin d'amour.

Hors ligne