ImageMagick'in 'convert` yardımcı programı PDF girişiyle * çok fazla * bellek alıyor


11

ImageMagick'in convert* -> PNG dönüşümü için sık sık kullanıyorum , ancak PDF'de 50'den fazla sayfa olduğunda - convert3 Gib (!!!) belleğinden daha fazla yer. Sanırım önce her şeyi yüklüyor.

Bu kabul edilemez. PDF sayfa sayfa okumak gerekir, neden hepsini bir kerede!

Belki bir şekilde ayarlamanın bir yolu var mı? Veya iyi bir alternatif var mı?

Yanıtlar:


10

Aşağıdaki ile çözüldü:

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

9

Önbellek denediniz mi?

Man sayfasından

- önbellek eşiği

      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.

1
Bunun için bir seçenek var convertmı? Ben sadece "-limit tip değeri piksel önbellek kaynak sınırı" var. Artı senin alıntı "80 Mb varsayılan" diyor, ama benim dönüşüm tüm RAM yiyor :)
kolypto

-Mache'yi yalnızca bir değer eklemeden eklerseniz 80 Mb varsayılan olabilir.
Shikoru

1
Hmm, IMagick'imin hafızasını 64 MB ile sınırlamak için sadece "-limit 64 hafızası" var. Yine de çalışıyor, teşekkürler! :)
kolypto

2
Bulunan: "-cache <threshold> (Bu seçenek, -limit seçeneğiyle değiştirildi)"
kolypto

1
@kolypto Benim yorumumda, ImageMagick web siteleri varsayılan birimin bayt olduğunu söylüyor: "Dosya değeri dosya sayısıdır. Diğer sınırlar bayttır. SI ile bellek, harita, alan ve disk kaynağı sınırları için argümanlar tanımlayın önekleri (.eg 100MB). " imagemagick.org/script/command-line-options.php#limit
thomasa88

9

Aşağıdakileri kullanıyorum:

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

Ana sürücümde sınırlı alan var, bu yüzden bir değişken

env MAGICK_TMPDIR=/host/Temp convert -limit memory 64 -limit map 128 original.djvu newfile.pdf

Kullanırken -limitdisk kullanımı itmek gibi görünüyordu. Imagemagick'in olduğu kadar çok bellek ve disk kullanması tuhaf görünüyor ... çünkü kesinlikle bir seferde sadece bir sayfa oluşturabilir ... ama sanırım bazı paralellikler olabilir.
Att Righ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.