Ik gebruik Imagemagick op een rails-app met Minimagick en ik genereer er een pictogram mee.
Als ik mijn proces start, krijg ik deze fout en ik vind geen oplossing:
MiniMagick::Error (`convert -limit memory 2GiB -limit map 2GiB -limit disk 4GiB -background none -fill #000000 -font ttf/SELIS006N.ttf -pointsize 300 label: S public/pictogram_images/RECINTAN-EL-064-layer-1.png` failed with error:
convert.im6: cache resources exhausted ` S' @ error/cache.c/OpenPixelCache/4078.
convert.im6: no images defined `public/pictogram_images/RECINTAN-EL-064-layer-1.png' @ error/convert.c/ConvertImageCommand/3044.
):
Mijn proces is eenvoudig, ik heb een .tff-bestand en elk teken is een pictogram. Ik wil gewoon alle voorbeelden van dit personage in png genereren.
Antwoord 1, autoriteit 100%
Zoek de policy.xml met find / -name "policy.xml"
zoiets als /etc/ImageMagick-6/policy.xml
en verander <policy domain="resource" name="disk" value="1GiB"/>
in <policy domain="resource" name="disk" value="8GiB"/>
raadpleeg conversie mislukt vanwege resourcelimieten
Antwoord 2, autoriteit 30%
De fout treedt waarschijnlijk op omdat u onvoldoende geheugen heeft. U kunt de bronnen controleren met het volgende commando:
convert -list resource
De uitvoer zal er ongeveer zo uitzien:
Resource limits:
Width: 16KP
Height: 16KP
Area: 128MP
Memory: 256MiB
Map: 512MiB
Disk: 1GiB
File: 768
Thread: 8
Throttle: 0
Time: unlimited
Hier kun je zien dat de toegewezen hoeveelheden schijfruimte en geheugen erg klein zijn. Dus om het te wijzigen, moet u het bestand policy.xml wijzigen dat zich ergens in de map /etc/ImageMagick-6 bevindt.
Wijzig <policy domain="resource" name="disk" value="1GiB"/>
in <policy domain="resource" name="disk" value="4GiB"/>
in het bestand policy.xml.
Antwoord 3, autoriteit 5%
sed -i '/disable ghostscript format types/,+6d' /etc/ImageMagick-6/policy.xml //this one is just to solve convertion from .tiff to pdf, you may need it some day
sed -i -E 's/name="memory" value=".+"/name="memory" value="8GiB"/g' /etc/ImageMagick-6/policy.xml
sed -i -E 's/name="map" value=".+"/name="map" value="8GiB"/g' /etc/ImageMagick-6/policy.xml
sed -i -E 's/name="area" value=".+"/name="area" value="8GiB"/g' /etc/ImageMagick-6/policy.xml
sed -i -E 's/name="disk" value=".+"/name="disk" value="8GiB"/g' /etc/ImageMagick-6/policy.xml
Antwoord 4
Ik weet niet precies welk item het probleem veroorzaakt, maar het is waarschijnlijk een van deze:
1) U moet uw lettertype in het op XML gebaseerde lettertypebestand van ImageMagick plaatsen in plaats van een file.ttf
op te geven in uw convert
-opdracht. Gebruik
. om de lijst met beschikbare lettertypen te krijgen
identify -list font | more
Path: /Users/mark/.magick/type.xml <--- Edit your font into here
Font: ACaslonPro
family: unknown
style: Undefined
stretch: Undefined
weight: 0
glyphs: /Library/Fonts/ACaslonPro-Regular.otf
Font: ACaslonPro-Semibold
family: unknown
style: Undefined
stretch: Undefined
weight: 0
glyphs: /Library/Fonts/ACaslonPro-Semibold.otf
...
...
In het begin ziet u het pad naar het configuratiebestand voor uw lettertypen en u moet dat bewerken om het door u genoemde TTF-bestand op te nemen. Als je veel lettertypen hebt om toe te voegen, wil je het proces misschien automatiseren – zie mijn andere post hier.
2) Mogelijk moet u de #
in uw -fill
-optie escapen, of deze op zijn minst omringen met enkele of dubbele aanhalingstekens om deze voor de shell te verbergen, als je MiniMagick
via shell aanroept – ik ken de ins en outs van MiniMagick
niet.
3) Mogelijk moet u de letter S
die u wilt uitvoeren tussen enkele of dubbele aanhalingstekens citeren.
4) Mogelijk moet u de spatie na de dubbele punt na label
verwijderen.
Waar ik op doel is dat je commando misschien meer als volgt zou moeten zijn:
convert -limit memory 2GiB -limit map 2GiB -limit disk 4GiB -background none -fill "#000000" -font "TimesNewRoman" -pointsize 300 label:"S" output.png