ImageMagick की `कन्वर्ट` उपयोगिता पीडीएफ इनपुट के साथ * बहुत अधिक * मेमोरी लेती है


11

मैं अक्सर convert* -> PNG रूपांतरण के लिए ImageMagick का उपयोग करता हूं , लेकिन जब PDF में 50 से अधिक पृष्ठ होते हैं - तो convert3 से अधिक (3) मेमोरी खा जाता है। मुझे लगता है कि यह पहले सब कुछ लोड करता है।

यह अस्वीकार्य है। यह पृष्ठ पर पीडीएफ पृष्ठ को पढ़ना चाहिए, क्यों उन सभी को एक ही बार में बिल्ली!

हो सकता है कि किसी तरह इसे ट्यून करने का कोई तरीका हो? या कोई अच्छा विकल्प?

जवाबों:


10

निम्नलिखित के साथ हल:

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

क्या आपने कैश की कोशिश की है?

मैन पेज से

-चेहरा दहलीज

      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
क्या यह एक विकल्प है convert? मेरे पास केवल "-Litit type value पिक्सेल कैश रिसोर्स लिमिट" है। साथ ही आपका उद्धरण "80Mb डिफ़ॉल्ट है" कहता है, लेकिन मेरा कन्वर्ट सभी RAM को खा जाता है :)
kolypto

80Mb डिफ़ॉल्ट हो सकता है यदि आप इसके बिना एक मूल्य के बिना सिर्फ कैश जोड़ें।
शिकोरू

1
हम्म, मेरी IMagick में केवल "-limit मेमोरी 64" है, इसकी मेमोरी को 64MB तक सीमित करने के लिए। यह काम करता है, वैसे भी धन्यवाद! :)
कोल्लिप्टो

2
मिला: "-कैचे <थ्रेशोल्ड> (इस विकल्प को -आमिट विकल्प द्वारा प्रतिस्थापित किया गया है)"
kolypto

1
@kolypto मेरी व्याख्या में, ImageMagick वेबसाइटें कहती हैं कि डिफ़ॉल्ट इकाई बाइट्स है: "फ़ाइल के लिए मान फ़ाइलों की संख्या में है। अन्य सीमाएं बाइट्स में हैं। एसआई के साथ मेमोरी, मैप, एरिया और डिस्क सीमाओं के लिए तर्कों को परिभाषित करें। उपसर्ग (.eg 100 एमबी)। " imagemagick.org/script/command-line-options.php#limit
thomasa88

9

मैं निम्नलिखित का उपयोग कर रहा हूं:

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

मेरी मुख्य ड्राइव में सीमित स्थान है, इसलिए मैं एक चर का उपयोग करता हूं

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

-limitजब मैंने इसका उपयोग किया था तो डिस्क उपयोग को धक्का देना प्रतीत हो रहा था। यह अजीब लगता है कि इमेजमैगिक मेमोरी और डिस्क का उतना ही उपयोग कर रहा है जितना ... यह निश्चित रूप से एक समय में सिर्फ एक पेज रेंडर कर सकता है ... लेकिन मुझे लगता है कि कुछ समानता हो सकती है।
आरटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.