Sobrecarga de memoria de conversión por lotes de Imagemagick

Sobrecarga de memoria de conversión por lotes de Imagemagick

Debo convertir alrededor de mil millones de imágenes de jpg2 a jpg...

Yo creo tal .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"
  )
)

pero cuando convierte más de ~ 100 000 ventanas, me arroja errores con memoria libre, etc. ¿Cómo puedo hacer que la memoria se use más humanamente? ¿Entonces ese convertidor de imágenes? En caso afirmativo, libere ese recuerdo... ¿Quizás haya formas de conectar esto con otra cosa?

Ahora recibo errores de memoria libre de concolse y también errores de lanzamiento de ventana...

Además, si elimino la memoria límite 0 - el mapa límite 0, tengo el mismo problema...

Respuesta1

A continuación me funciona bien, por lo que, en caso de que le resulte útil para resolver el problema con la memoria de estos comandos en su caso particular, le proporcionaré una respuesta.

Sé que tu ejemplo está usando unPARA /Dbucle y usarlo para iterar en otroPARAbucle pero usando un soloPARA /Fbucle junto con eldirecciónEl comando y los modificadores aplicables parecen ayudar a garantizar que cada conversión iterada, etc., esté en una nueva instancia de memoria.


Sobrescribir archivos convertidos in situ

@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

Enviar archivos convertidos a un directorio de salida

@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

Recursos adicionales

información relacionada