Conversions

utf8

Pour renomer des fichiers, convmv, ex convmv -f iso8859-1 -t utf8 /chemin/vers/fichiers/* pour voir ce que ça donnerait puis convmv–notest -f iso8859-1 -t utf8 * pour le faire.

Pour changer l'encodage du CONTENU des fichiers, c'st iconv, ex iconv -f ISO-8859-1 -t UTF-8 fichier.iso8859 > fichier.utf8

Pour faire les 2 en même temps, avec juste iconf ça peut être (dans le dossier en ISO)

find -type f > fichiers.list
mkdir ../UTF-8
out_base=../UTF-8
while read fin; do fout="$out_base/$(echo $fin|iconv -f ISO-8859-1 -t UTF-8)"; out="$(dirname "$fout")"; [ ! -d "$out" ] && mkdir -p "$out" && echo "$out créé"; iconv -f ISO-8859-1 -t UTF-8 "$fin" > "$fout"; done < fichiers.list

Attention avec du html, il faudra propablement utiliser sed pour modifier aussi le charset s'il est précisé dans le code, ce qui devrait être le cas la plupart du temps, avec par exemple :

find -type f -exec sed -i.bak -e 's/charset=ISO-8859-1/charset=UTF-8/' {} \;

(pour éviter les .bak créé en cas de modif, mettre juste -i)

Images et textes

convert (binaire d'imagick) connait un paquet de formats et permet la plupart des conversions d'images.

Options de convert

La liste est sur http://www.imagemagick.org/script/command-line-options.php (ajouter #option-voulue à l'url pour aller directement sur la description voulue).

La liste des couleurs utilisables http://www.imagemagick.org/script/color.php

Quelques examples :

# resize pour rentrer dans un carré de 800x800 dans un dossier resized
for f in *; do convert $f -resize 800x800 resized/$f; done
# resize et conversion en même temp, il suffit de changer l'extension
convert fichier1.png -resize 25% fichier2.jpg

composite

Un autre binaire du paquet imagemagick.

Ex. pour décaler une image over.png sur une autre (souvent un fond…) under.png de 25 pixel vers la droite et 50 pixels vers le bas :
composite -geometry +25+50 over.png under.png out.png

Exemples

Créer un fond (blanc) convert -size 600x820 xc:white fond.png

pdf2swf

binaire du paquet swftools

img2swf

le paquet swf tools permet de convertir jpeg et png en swf, avec les utilitaires qui vont bien pour jouer sur les tailles et les décalages.

exemple png2swf, avec décalage

Il faut mettre des png "plein pot" (pour pouvoir zoomer) dans des swf de 600x820, en décalalnt le résultat pour équilibrer les blancs. Le gros du travail est le script awk (qui génère l'affectation de 2 variables pour le shell)

for f in $src/*.png; do \
  echo; echo $f; \
  eval $(identify $f|sed -e 's/.*PNG \([0-9]\+\)x\([0-9]\+\).*/\1 \2/'|awk '
    {x=$1; y=$2}; 
    END {
      a=60000/x; b=82000/y; 
      if (a < b) {
        scale=a; decaly=(820-y*scale/100)/2; 
        if (decaly >20) arg="-y 20 ";
        else arg="-y " decaly -decaly % 1
      } else {
        scale=b; decalx=(600-(x*scale/100))/2; arg="-x " decalx - decalx % 1
      };
      print "scale=" scale " arg=\"" arg "\""
    }'); \
  echo "On obtient scale=$scale et arg=$arg"; \
  png2swf -s $scale -o tmp.swf $f; \
  swfcombine -T -o $swf/$(basename $f .png).swf fond_blanc_600x820.swf $arg tmp.swf;\
done;

pdf2img

on peut utiliser gs ou convert…

Avec gs (le %d sert à incrémenter un n° suivant les pages du pdf, ici on sort en png 24bits, à 300dpi)
gs -dBATCH -dNOPAUSE -r300 -sDEVICE=png16m -sOutputFile=resultat%d.png source.pdf

img2pdf

avec convert puis pdftk

# pour convertir les pages 02.jpg, 04.jpg, etc. en pdf, avec rotation (90° horaire)
for i in $(seq -w 2 2 96); do echo $i; convert -rotate 90 $i.jpg $i.pdf; done;
# puis concat en un seul pdf
for i in $(seq -w 2 2 96); do in="$in $i.pdf"; done;
pdftk $in cat output resultat.pdf
# on aurait aussi pu demander à pdftk de faire la rotation (E pour East soit 90° horaire, sinon W ou S)
pdftk $in cat 1-endE output resultat.pdf

Manipulation de pdf

Tous est dans pdftk…

Découper

Pour faire un pdf par page : pdftk $f burst output $(basename $f .pdf)_%02d.pdf

(man pdftk pour plus d'infos, avec des plages de pages éventuelles, les pages paires seulement, etc…)

Regrouper

pdftk fichier1.pdf fichier2.pdf cat output fichier_sortie.pdf

 
linux/conversions.txt · Dernière modification: 21/09/2010 12:54 par daniel