Speicherüberlastung bei der Stapelkonvertierung von Imagemagick

Speicherüberlastung bei der Stapelkonvertierung von Imagemagick

Ich muss ungefähr eine Milliarde Bilder von jp2 in jpg konvertieren ...

Ich erstelle solche .bat

for /d %%d in (*) do (
  for %%f in ("%%~d\*.jp2") do (
    convert -limit memory 0 -limit map 0 "%%~ff" -quality 25 "%%~dpf\jpg\%%~nf.jpg"
  )
)

aber wenn es über ~100.000 Konvertierungen gibt, bekomme ich von Windows Fehlermeldungen bezüglich des freien Speichers usw. ... Wie kann ich dafür sorgen, dass der Speicher menschlicher genutzt wird? Also dieser Bildkonverter? Wenn ja, dann geben Sie den Speicher frei ... Vielleicht gibt es Möglichkeiten, dies mit einem Thread oder etwas anderem zu verbinden?

Jetzt erhalte ich in Concole Fehler bezüglich des freien Speichers und auch Windows wirft Fehler aus ...

Auch wenn ich Limit Memory 0 - Limit Map 0 lösche, habe ich das gleiche Problem ...

Antwort1

Das Folgende funktioniert bei mir gut. Falls es Ihnen also bei der Lösung des Speicherproblems für diese Befehle in Ihrem speziellen Fall hilfreich ist, gebe ich Ihnen eine Antwort.

Ich weiß, dass Ihr Beispiel einFÜR /DSchleife und verwenden Sie diese, um in eine andere zu iterierenFÜRSchleife, sondern mit einem einzigenFÜR /FSchleife zusammen mit demDIRBefehl und anwendbare Schalter scheinen dabei zu helfen, sicherzustellen, dass jede wiederholte Konvertierung usw. in einer neuen Speicherinstanz erfolgt.


Konvertierte Dateien direkt überschreiben

@ECHO ON

SET Source=C:\SourceFolder\Images
SET Ext=*.jp2

FOR /F "DELIMS=" %%A IN ('DIR /A-D /S /B "%Source%\%Ext%"') DO convert -limit memory 0 -limit map 0 "%%~A" -quality 25 "%%~A"
GOTO EOF

Konvertierte Dateien in ein Ausgabeverzeichnis ausgeben

@ECHO ON

SET Source=C:\SourceFolder\Images
SET Output=C:\Output\jpg
SET Ext=*.jp2

FOR /F "DELIMS=" %%A IN ('DIR /A-D /S /B "%Source%\%Ext%"') DO convert -limit memory 0 -limit map 0 "%%~A" -quality 25 "%Output%\%%~NXA"
GOTO EOF

Weitere Ressourcen

verwandte Informationen