L'utilitaire de conversion d'ImageMagick prend * trop * de mémoire avec une entrée PDF

11

J'utilise souvent ImageMagick convertpour * -> la conversion PNG, mais lorsque le PDF a plus de 50 pages - convertmange plus de 3 Go (!!!) de mémoire. Je suppose que cela charge d'abord tout.

C'est inacceptable. Il devrait lire le PDF page par page, pourquoi tout le monde à la fois!

Peut-être qu'il y a un moyen de le régler d'une manière ou d'une autre? Ou de bonnes alternatives?

kolypto
la source

Réponses:

10

Résolu avec ce qui suit:

cat <<EOF > /etc/profile.d/ImageMagick.sh
# Set ImageMagick memory limits: it eats too much
export MAGICK_MEMORY_LIMIT=1024 # Use up to *MB of memory before doing mmap
export MAGICK_MAP_LIMIT=1024    # Use up to *MB mmaps before caching to disk
export MAGICK_AREA_LIMIT=4096   # Use up to *MB disk space before failure
export MAGICK_FILES_LIMIT=1024  # Don't open more than *file handles
EOF
kolypto
la source
9

Avez-vous essayé le cache?

Depuis la page de manuel

-seuil de cache

      megabytes of memory available to the pixel cache.

      Image pixels are stored in memory until 80 megabytes of
      memory have been consumed.  Subsequent pixel operations

      are cached on disk.  Operations to memory are  significantly 
      faster but if your computer does not have a sufficient 
      amount of free memory you may  want  to  adjust
      this threshold value.
Shikoru
la source
1
Est-ce une option pour convert? J'ai seulement "-limit type value pixel cache resource limit". De plus, votre citation dit "80 Mo est la valeur par défaut", mais mon converti mange toute la RAM :)
kolypto
80 Mo peuvent être la valeur par défaut si vous ajoutez simplement le -cache sans valeur le suivant.
Shikoru
1
Hmm, mon IMagick n'a que "-limit memory 64" pour limiter sa mémoire à 64 Mo. Cela fonctionne, merci quand même! :)
kolypto
2
Trouvé: "-cache <threshold> (Cette option a été remplacée par l'option -limit)"
kolypto
1
@kolypto Selon mon interprétation, les sites Web ImageMagick disent que l'unité par défaut est l'octet: "La valeur du fichier est en nombre de fichiers. Les autres limites sont en octets. Définissez les arguments pour les limites de mémoire, de carte, de zone et de ressources de disque avec SI préfixes (.eg 100 Mo). " imagemagick.org/script/command-line-options.php#limit
thomasa88
8

J'utilise les éléments suivants:

convert -limit memory 64 -limit map 128 original.djvu newfile.pdf

Mon disque principal a un espace limité, donc je ajoute une variable

env MAGICK_TMPDIR=/host/Temp convert -limit memory 64 -limit map 128 original.djvu newfile.pdf
dufte
la source
L'utilisation du -limitdisque semblait pousser l'utilisation du disque lorsque je l'ai utilisé. Il semble étrange qu'imagemagick utilise autant de mémoire et de disque qu'il l'est ... car on ne peut certainement rendre qu'une seule page à la fois ... mais je suppose qu'il pourrait y avoir un certain parallélisme.
Att Righ