ImageMagick 명령줄 변환 - 제한 값

ImageMagick 명령줄 변환 - 제한 값

매우 큰 이미지를 변환해야 합니다. Image Magick의 기본 리소스 제한은 너무 작습니다.

Image Magick 웹사이트한도 변경에 대해 논의합니다., 그러나 시도한 구문 중 어느 것도 작동하지 않았으며 명령이 인식되지 않습니다.

예를 들어, Magick_disk_limit를 25GB 정도로 설정해야 합니다. 그런 다음 Magick_area_limit, Magick_height_limit 등과 같이 설정할 다른 일련의 항목이 있습니다. 해당 명령을 어떻게 입력합니까?

내가 시도한 것은

-limit width 100KP
convert -limit width 100KP
magick_disk_limit 25GB
MAGICK_DISK_LIMIT 25GB

모든 경우에 응답은 명령을 찾을 수 없거나 인식할 수 없는 리소스 유형입니다. 또한 다음과 같이 명령의 일부로 정의된 모든 -limit 매개변수를 사용하여 변환 명령을 입력해 보았습니다.

convert -limit 100KP 100KP 100GP 14GiB 100GiB unlimited 5 8 0 unlimited Lunar_LRO_LrocKaguya_DEMmerge_60N60S_512ppd.tif MoonRelief.png

지금 시도했지만 디스크 제한에 export MAGICK_DISK_LIMIT=25GiB들어가도 변경되지 않았습니다.identify -list resource

convert -limit memory 12GB -limit map 25GiB -limit width 10MP -limit height 10MP -limit area 100GP -limit disk 30GiB Lunar_LRO_LrocKaguya_DEMmerge_60N60S_512ppd.tif MoonRelief.png

이 경고 및 오류 목록을 생성합니다.

convert-im6.q16: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 34736 (0x87b0) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 34737 (0x87b1) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 42112 (0xa480) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: Unknown field with tag 42113 (0xa481) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/912.
convert-im6.q16: width or height exceeds limit `Lunar_LRO_LrocKaguya_DEMmerge_60N60S_512ppd.tif' @ error/cache.c/OpenPixelCache/3837.
convert-im6.q16: no images defined `MoonRelief.png' @ error/convert.c/ConvertImageCommand/3258.

답변1

나는 할 수 있었다ImageMagick 포럼을 통해 해결책을 찾으세요.

그 방법은 ImageMagick에서 처리하는 파일(policy.xml)에서 리소스 제한에 대한 설정을 변경하는 것이었습니다. Ubuntu 18.04에서는 /etc/ImageMagick-6. 읽기 전용으로 설정되어 있으므로 sudo chmod 777 policy.xml해당 폴더 내에서 쓰기 권한을 일시적으로 변경했습니다. 변경 후 권한을 744로 전환했습니다.

Policy.xml의 관련 섹션은 다음과 같습니다.

<policymap>
  <!-- <policy domain="resource" name="temporary-path" value="/tmp"/> -->
  <policy domain="resource" name="memory" value="14GiB"/>
  <policy domain="resource" name="map" value="30GiB"/>
  <policy domain="resource" name="width" value="16MP"/>
  <policy domain="resource" name="height" value="16MP"/>
  <policy domain="resource" name="area" value="40GP"/>
  <policy domain="resource" name="disk" value="30GiB"/>
  <!-- <policy domain="resource" name="file" value="768"/> -->
  <!-- <policy domain="resource" name="thread" value="4"/> -->
  <!-- <policy domain="resource" name="throttle" value="0"/> -->
  <!-- <policy domain="resource" name="time" value="3600"/> -->
  <!-- <policy domain="system" name="precision" value="6"/> -->
  <!-- not needed due to the need to use explicitly by mvg: -->
  <!-- <policy domain="delegate" rights="none" pattern="MVG" /> -->
  <!-- use curl -->
  <policy domain="delegate" rights="none" pattern="URL" />
  <policy domain="delegate" rights="none" pattern="HTTPS" />
  <policy domain="delegate" rights="none" pattern="HTTP" />
  <!-- in order to avoid to get image with password text -->
  <policy domain="path" rights="none" pattern="@*"/>
  <policy domain="cache" name="shared-secret" value="passphrase" stealth="true"/>
</policymap>

변경이 필요한 부분에는 이미 내가 대체한 값이 있으므로 문제의 이미지를 처리할 수 있습니다. 3번째부터 8번째 줄까지, "memory"라는 리소스부터 "disk"라는 리소스까지입니다.

변경한 후 터미널을 체크인하면 identify -list resource새 값이 반환됩니다.

답변2

당신은 무엇을 시도했는지 말하지 않았으며 대소문자 문제 " magick_area_limit"가 " "와 동일하지 않은 것 같습니다 MAGICK_AREA_LIMIT.

하지만 여기에는 두 가지 방법이 있습니다.

imagemagick스크립트에서 시작 :

#!/bin/bash
export MAGICK_DISK_LIMIT=42GiB
export MAGICK_AREA_LIMIT=42MP
# etc ...
imagemagic "$@"

또는 다음 env명령을 사용하십시오.

env MAGICK_DISK_LIMIT=42GiB MAGICK_AREA_LIMIT=42MP imagemagick ...

답변3

나는 우분투 20.0.4 LTS를 사용하고 있습니다. 이것은 @kim 홀더의 답변에 대한 확장입니다.

이동sudo nano /etc/ImageMagick-6/policy.xml

큰 크기의 이미지 변환을 활성화하려면 아래 줄을 변경하십시오.

  <policy domain="resource" name="memory" value="14GiB"/>
  <policy domain="resource" name="map" value="30GiB"/>
  <policy domain="resource" name="width" value="16MP"/>
  <policy domain="resource" name="height" value="16MP"/>
  <policy domain="resource" name="area" value="40GP"/>
  <policy domain="resource" name="disk" value="30GiB"/>

원래 답변도 읽어보세요
https://askubuntu.com/a/1041633/970339

감사합니다. 빨리 수정하는 것이 명확해지기를 바랍니다.

답변4

저는 이 문제를 VPS에서 관리하고 리소스가 많지 않으므로 다음 3가지 값을 조금만 변경하면 됩니다.

<policy domain="resource" name="width" value="24KP"/> <!-- default 16KP -->
<policy domain="resource" name="height" value="24KP"/> <!-- default 16KP -->
<policy domain="resource" name="disk" value="3GiB"/> <!-- default 1GiB -->

사진 7803x19208의 크기를 조정할 수 있습니다!

관련 정보