J'ai un ensemble de documents assez volumineux (150 Go ~5000 fichiers) et j'aimerais savoir comment pré-générer des vignettes, de préférence à partir de la ligne de commande, de sorte que lorsque je navigue dans le dossier, je n'ai pas à attendre qu'elles soient créées.
Réponses
Trop de publicités?Grâce aux commentaires j'ai décidé d'utiliser un des scripts de ce post recommandé de AskUbuntu.
Je l'ai simplement copié dans un fichier, l'ai enregistré dans mon ~/bin (dans mon cas sous le nom de generate-thumbnails) et ai lancé chmod +x
sur elle. Ensuite, j'ai juste navigué jusqu'au dossier ~/Documents et j'ai exécuté generate-thumbnails *
Je ne sais pas combien de temps ça a pris, mais quand je me suis réveillé le lendemain, tout allait bien.
Sachez que vous devrez peut-être installer gir1.2-gnomedesktop-3.0
:
sudo apt-get install gir1.2-gnomedesktop-3.0
Comme il ne perd pas de temps à générer des doublons, il s'agirait d'une tâche cron à faible impact (après la première exécution).
À partir d'une invite de terminal crontab -e
Si c'est la première fois que vous modifiez la crontab, il vous sera demandé de choisir un éditeur. J'utilise simplement nano et je vais vous donner les commandes clavier pour celui-ci.
Ajoutez ce qui suit à la fin...
0 4 * * * /home/user/bin/generate-thumbnails /home/user*
- Ctl o Sauvegarde le fichier.
-
Ctl x Va sortir. (si vous avez une erreur de syntaxe, il vous le fera savoir et vous pouvez simplement
crontab -e
à nouveau. Cela configure le cron pour qu'il s'exécute à 4h du matin tous les matins. - Si vous voulez le changer ou regarder d'autres options de cron https://help.ubuntu.com/community/CronHowto est un bon endroit pour trouver des options.
Principales raisons d'exécuter ce script :
- il parcourra les sous-répertoires
- il est conscient des doublons
- il fonctionne aussi bien pour les vidéos
- il fonctionnera dans d'autres DE (je change souvent en fonction de ce que je fais)
- ce serait bien pour une tâche cron
Voici le script.... (Merci James Henstridge ! !
#!/usr/bin/env python2
import os
import sys
from gi.repository import Gio, GnomeDesktop
def make_thumbnail(factory, filename):
mtime = os.path.getmtime(filename)
# Use Gio to determine the URI and mime type
f = Gio.file_new_for_path(filename)
uri = f.get_uri()
info = f.query_info(
'standard::content-type', Gio.FileQueryInfoFlags.NONE, None)
mime_type = info.get_content_type()
if factory.lookup(uri, mtime) is not None:
print "FRESH %s" % uri
return False
if not factory.can_thumbnail(uri, mime_type, mtime):
print "UNSUPPORTED %s" % uri
return False
thumbnail = factory.generate_thumbnail(uri, mime_type)
if thumbnail is None:
print "ERROR %s" % uri
return False
print "OK %s" % uri
factory.save_thumbnail(thumbnail, uri, mtime)
return True
def thumbnail_folder(factory, folder):
for dirpath, dirnames, filenames in os.walk(folder):
for filename in filenames:
make_thumbnail(factory, os.path.join(dirpath, filename))
def main(argv):
factory = GnomeDesktop.DesktopThumbnailFactory()
for filename in argv[1:]:
if os.path.isdir(filename):
thumbnail_folder(factory, filename)
else:
make_thumbnail(factory, filename)
if __name__ == '__main__':
sys.exit(main(sys.argv))
Bash script (bravo à Tim) . A partir du lien, le script suivant et les commentaires :
for i in *.jpg
do
djpeg $i | pnmscale -xysize 48 38 | cjpeg -opti -progr -qual ‘75%’ > TN_$i
echo $i processed
done
-
Cela va créer des vignettes pour les fichiers se terminant par .jpg et créer une vignette avec le nom TN_*.jpg. Ajustez les paramètres à votre convenance.
-
Pour les vignettes, vous n'avez souvent pas envie d'utiliser imagemagick ou convert ou autre ; pour ma taille normale (48×38), cela crée un énorme jpg de 50K alors qu'il existe d'autres moyens de les réduire :
-
Cela permet de maintenir la taille moyenne des images à environ 1K - ce qui convient mieux à une page de vignettes !
-
pnmscale sera installé par défaut
-
Installation de djpeg et cjpeg
sudo apt-get install libjpeg-turbo-progs
-
edit : ne fonctionne pas avec le PDF
Ignorant le conseil dans le commentaire sur l'utilisation d'imagemagick ...
sudo apt-get install imagemagick
et l'utiliser comme une méthode similaire à la précédente, mais dans ce cas, en utilisant la commande convert de l'IM :
#!/bin/bash
FILES="$@"
for i in $FILES
do
echo "Processing image $i ..."
/usr/bin/convert -thumbnail 100X100 $i $i.png
done
Voici un document élaboré sur le thumbnailing en utilisant IM. Vous pouvez spécifier la hauteur, la largeur et bien d'autres choses encore. Exemple à partir du lien :
Par exemple, ceci convertit des images JPG en vignettes GIF dans un sous-répertoire "thumbs" qui vient d'être créé de 100 pixels de large et 100 pixels de haut
mkdir thumbs mogrify -format gif -path thumbs -thumbnail 100x100 *.jpg
Oh le titre est spécifique au PDF. En utilisant IM...
convert -thumbnail 100x100 1.pdf 1.png