ยูทิลิตี้ `convert` ของ ImageMagick ใช้หน่วยความจำ * มากเกินไปพร้อมอินพุต PDF


11

ฉันมักจะใช้ ImageMagick convertสำหรับ * -> การแปลง PNG แต่เมื่อ PDF มีมากกว่า 50 หน้า - convertกินหน่วยความจำ 3 กิบ (!!!) มากขึ้น ฉันเดาว่ามันจะโหลดทุกอย่างก่อน

ไม่เป็นที่ยอมรับ มันควรอ่าน PDF ทีละหน้าทำไมห่าพวกเขาทั้งหมดในครั้งเดียว!

อาจจะมีวิธีการปรับแต่งมันอย่างใด? หรือทางเลือกที่ดี?

คำตอบ:


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

คุณลองแคชแล้วหรือยัง

จากหน้าคน

-cache threshold

      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หรือไม่? ฉันมีเพียง "- จำกัด จำนวนพิกเซลทรัพยากรแคชแคช" พลัสกล่าวว่าคำพูดของคุณ "80Mb เป็นค่าเริ่มต้น" แต่แปลงกินของฉัน RAM ทั้งหมด :)
kolypto

80Mb อาจเป็นค่าเริ่มต้นหากคุณเพิ่งเพิ่ม -cache โดยไม่มีค่าที่ตามมา
Shikoru

1
อืม IMagick ของฉันมีเฉพาะ "-limit memory 64" เพื่อ จำกัด หน่วยความจำไว้ที่ 64MB มันใช้งานได้ดีขอบคุณ! :)
kolypto

2
พบ: "-cache <threshold> (ตัวเลือกนี้ถูกแทนที่ด้วยตัวเลือก -limit)"
kolypto

1
@kolypto ในการตีความของฉันเว็บไซต์ ImageMagick บอกว่าหน่วยเริ่มต้นคือไบต์: "ค่าของไฟล์เป็นจำนวนไฟล์ข้อ จำกัด อื่น ๆ มีหน่วยเป็นไบต์กำหนดอาร์กิวเมนต์สำหรับหน่วยความจำแผนที่พื้นที่และข้อ จำกัด ทรัพยากรดิสก์ด้วย SI คำนำหน้า (.eg 100MB) " 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ดูเหมือนจะผลักดันการใช้งานดิสก์เมื่อฉันใช้มัน ดูเหมือนแปลกที่ imagemagick ใช้หน่วยความจำและดิสก์มากที่สุดเท่าที่มันเป็น ... เนื่องจากแน่นอนว่าสามารถแสดงได้ครั้งละหนึ่งหน้าเท่านั้น ... แต่ฉันคิดว่าอาจมีการขนานกันเกิดขึ้น
Att Righ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.