„convert.im6: Speicherzuweisung ‚a.svg‘ fehlgeschlagen“, Versuch, eine 691 KB SVG-Datei mit 100 GB RAM in EPS zu konvertieren

„convert.im6: Speicherzuweisung ‚a.svg‘ fehlgeschlagen“, Versuch, eine 691 KB SVG-Datei mit 100 GB RAM in EPS zu konvertieren

Ich habe versucht, eine 691 KB SVG-Datei in EPS zu konvertieren mitBildMagickverwende den Befehl convert a.svg a.eps, aber ich erhalte eine memory allocation failedFehlermeldung:

ubuntu@server:~$ convert a.svg a.eps
convert.im6: memory allocation failed `a.svg' @ error/svg.c/ReadSVGImage/2889.
convert.im6: no images defined `a.eps' @ error/convert.c/ConvertImageCommand/3044.

Auf meinem Computer läuft Ubuntu 14.04 x64 und er hat 100 GB RAM. Sonst läuft nichts darauf.

Was könnte das Problem sein? Die Datei ist verfügbarHier.

Antwort1

Ich glaube nicht, dass ImageMagick das richtige Tool für Sie ist, wenn Sie SVG in EPS konvertieren möchten. Beide Formate sind Vektorformate, aber ImageMagick konvertiert die SVG-Datei in ein Rasterbild.

Der Grund, warum Ihre Konvertierung fehlschlägt, ist, dass Ihr Bild eine lächerlich große Leinwand hat. Die Breite und Höhe betragen 216000pt, was laut einigen Online-Konvertern 288000 Pixeln entspricht. Nehmen wir an, Sie verwenden die Q8-Version von ImageMagick. Um das Vektorbild in ein Rasterbild umzuwandeln, benötigen Sie die folgende Anzahl von Bits: 288000 (width) * 288000 (height) * 8 (bits per channel) * 3 (number of channels) = 1.990656e+12das ist 248.8 GB. Und deshalb kann ImageMagick Ihr Bild nicht zuordnen. Wenn Sie die Q16-Version von ImageMagick verwenden, benötigen Sie die doppelte Menge an Speicher

Wenn Sie das Bild dennoch konvertieren möchten, obwohl Sie dafür wahrscheinlich ein anderes Tool benötigen, können Sie die Größe Ihres Bildes mit der Option -density begrenzen. Der folgende Befehl erstellt ein PNG mit der Größe 1200 x 1200 für Ihr Bild:

convert -density 6 a.svg a.png

verwandte Informationen