
Ich muss ein extrem großes Bild konvertieren. Die standardmäßigen Ressourcenbeschränkungen von Image Magick sind viel zu klein.
Die Image Magick-Websitediskutiert die Änderung der Grenzwerte, aber keine der Syntaxen, die ich ausprobiert habe, hat funktioniert, die Befehle werden nicht erkannt.
Ich muss beispielsweise das magick_disk_limit auf etwa 25 GB festlegen. Dann müssen noch eine Reihe anderer Werte festgelegt werden, magick_area_limit, magick_height_limit usw. Wie gebe ich diese Befehle ein?
Was ich versucht habe ist
-limit width 100KP
convert -limit width 100KP
magick_disk_limit 25GB
MAGICK_DISK_LIMIT 25GB
In allen Fällen lautet die Antwort entweder „Befehl nicht gefunden“ oder „Ressourcentyp nicht erkannt“. Ich habe auch versucht, einen Konvertierungsbefehl mit allen -limit-Parametern einzugeben, die als Teil des Befehls definiert sind, wie folgt:
convert -limit 100KP 100KP 100GP 14GiB 100GiB unlimited 5 8 0 unlimited Lunar_LRO_LrocKaguya_DEMmerge_60N60S_512ppd.tif MoonRelief.png
Ich habe es jetzt versucht export MAGICK_DISK_LIMIT=25GiB
, aber als ich es dann eingegeben habe, identify -list resource
hat sich das Datenträgerlimit nicht geändert.
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
generiert diese Liste von Warnungen und Fehlern
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.
Antwort1
Ich war in der LageFinden Sie eine Lösung im ImageMagick-Forum.
Die Methode bestand darin, die Einstellungen für Ressourcenbeschränkungen in der Dateiverwaltung in ImageMagick zu ändern, die policy.xml heißt. In Ubuntu 18.04 befindet sie sich in /etc/ImageMagick-6
. Sie ist auf schreibgeschützt eingestellt, daher habe ich die Schreibberechtigungen sudo chmod 777 policy.xml
innerhalb dieses Ordners vorübergehend geändert. Nachdem ich die Änderungen vorgenommen hatte, habe ich die Berechtigung auf 744 geändert.
So sieht der entsprechende Abschnitt der Datei policy.xml aus:
<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>
Die Teile, die geändert werden mussten, haben bereits die Werte, die ich ersetzt habe, damit ich das betreffende Bild verarbeiten kann. Es handelt sich um die 3. bis 8. Zeile, die Ressource mit dem Namen „Speicher“ bis zur Ressource mit dem Namen „Festplatte“.
Nachdem Sie diese Änderungen vorgenommen haben, werden beim Einchecken im Terminal identify -list resource
die neuen Werte zurückgegeben.
Antwort2
Sie haben nicht gesagt, was Sie versucht haben, und ich vermute ein Groß-/Kleinschreibungsproblem: „ magick_area_limit
“ ist nicht dasselbe wie „ MAGICK_AREA_LIMIT
“.
aber es gibt zwei Möglichkeiten:
Beginnen Sie imagemagick
mit einem Skript:
#!/bin/bash
export MAGICK_DISK_LIMIT=42GiB
export MAGICK_AREA_LIMIT=42MP
# etc ...
imagemagic "$@"
oder verwenden Sie den env
Befehl:
env MAGICK_DISK_LIMIT=42GiB MAGICK_AREA_LIMIT=42MP imagemagick ...
Antwort3
Ich verwende Ubuntu 20.0.4 LTS. Dies ist eine Erweiterung zur Antwort von @kim holder
Gehe zusudo nano /etc/ImageMagick-6/policy.xml
Ändern Sie die folgenden Zeilen, um die Konvertierung von Bildern mit großer Größe zu ermöglichen.
<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"/>
Lesen Sie auch die ursprüngliche Antwort
https://askubuntu.com/a/1041633/970339
Danke, ich hoffe, das klärt die Angelegenheit, sodass die Lösung schnell durchgeführt werden kann.
Antwort4
Ich verwalte dieses Problem auf einem VPS und habe nicht so viele Ressourcen, also ändere einfach diese 3 Werte ein wenig:
<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 -->
und die Größe des Bildes 7803 x 19208 könnte geändert werden!