ImageMagick コマンドライン convert -limit 値

ImageMagick コマンドライン convert -limit 値

非常に大きな画像を変換する必要があります。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 コマンドを入力することも試しました。

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

ただし、次の 2 つの方法があります。

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

私はUbuntu 20.0.4 LTSを使用しています。これは@kim holderからの回答の拡張機能です。

へ移動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はサイズ変更できました!

関連情報