ImageMagick의`convert` 유틸리티는 PDF 입력으로 * 너무 많은 * 메모리를 사용합니다


11

필자는 종종 convert*-> PNG 변환에 ImageMagick을 사용 하지만 PDF에 50 페이지가 넘는 경우 convert3Gib (!!!) 이상의 메모리를 사용합니다. 먼저 모든 것을로드합니다.

용납 할 수 없습니다. 한 페이지 씩 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

캐시를 사용해 보셨습니까?

매뉴얼 페이지에서

캐시 임계 값

      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입니까? "-limit type value pixel cache resource limit"만 있습니다. 플러스 인용, "80MB의 기본이다"라고하지만 내 변환 먹는 모든 RAM :
kolypto

값 뒤에 -cache를 추가하지 않으면 80Mb가 기본값 일 수 있습니다.
시코 루

1
흠, 내 IMagick에는 메모리를 64MB로 제한하는 "-limit memory 64"만 있습니다. 어쨌든 작동합니다! :)
kolypto 2018

2
찾았습니다 "-cache <임계 값> (이 옵션은 -limit 옵션으로 대체되었습니다)"
kolypto

1
@kolypto 내 해석에 따르면 ImageMagick 웹 사이트는 기본 단위가 바이트라고 말합니다. "파일 값은 파일 수입니다. 다른 제한은 바이트입니다. SI를 사용하여 메모리, 맵, 영역 및 디스크 리소스 제한에 대한 인수를 정의하십시오. 접두사 (예 : 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

은 Using -limit내가 그것을 사용하는 경우 디스크 사용량을 밀어 보였다. imagemagick이 많은 양의 메모리와 디스크를 사용하고있는 것은 이상합니다. 한 번에 한 페이지 만 렌더링 할 수 있기 때문에 ... 병렬 처리가 진행될 수 있습니다.
Att Righ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.