Imagemagick sobrecarga de memoria de conversión por lotes

3

Debo convertir aproximadamente mil millones de imágenes de jp2 a jpg ...

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 se convierte más de ~ 100 000 ventanas arrojarme errores con memoria libre, etc ... ¿Cómo puedo hacer que la memoria se use más humanidad? Entonces, ¿ese convertidor de imágenes? en caso afirmativo, libere esa memoria ... ¿Tal vez hay maneras de enhebrar esto de otra manera?

Ahora obtengo errores de memoria libre de concolse y también errores de tiro de Windows ...

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

brabertaser19
fuente
Qué pasa @ brabertaser19 ... Curioso si aún tuviste la oportunidad de revisar la respuesta que proporcioné y darme algunos comentarios sobre el asunto para que pueda ayudarte a obtener una solución 100% funcional para este problema, ya que eso es lo que hago por una vida. Me conseguiste ayuda gratis si lo que ya he proporcionado no ha ayudado si ya has tenido la oportunidad de revisarlo. De lo contrario, considérelo como tal y también marque esa marca de verificación gris en la esquina superior derecha de la respuesta proporcionada y vuelva verde esa cosa.
Pimp Juice IT

Respuestas:

0

A continuación me funciona bien, así que en caso de que lo encuentre útil para resolver el problema con la memoria de estos comandos en su caso particular, le estoy proporcionando una respuesta.

Sé que su ejemplo es usar un bucle FOR / D y usarlo para iterar en otro bucle FOR, pero usar un solo bucle FOR / F junto con el comando DIR y los interruptores aplicables parece ayudar a garantizar que cada conversión iterada, etc. esté en un nuevo instancia de memoria.


Sobrescribir archivos convertidos en el lugar

@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

Salida de 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

Pimp Juice IT
fuente