lote Imagemagick que converte sobrecarga de memória

3

Devo converter cerca de um bilhão de imagens de jp2 para jpg ...

Eu crio 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"
  )
)

mas quando convertem mais de ~ 100 000 janelas me jogam com erro de memória livre etc ... Como posso fazer essa memória é usada mais humanidade? Então, esse imageconverter? se sim, em seguida, libere essa memória .... Talvez haja maneiras de enfiar isso em outra coisa?

Agora eu entro em erro de memória livre e também erro de lançamento da janela ...

Além disso, se eu excluir o limite de memória 0 -limit map 0, tenho o mesmo problema ...

    
por brabertaser19 28.02.2013 / 09:13

1 resposta

0

Abaixo, funciona bem para mim, por isso, caso ache útil resolver o problema com a memória desses comandos em seu caso específico, estou fornecendo uma resposta.

Eu sei que seu exemplo está usando um loop FOR / D e usando isso para iterar em outro loop FOR , mas usando um único FOR / F do loop junto com o < O comando strong> DIR e as opções aplicáveis parecem ajudar a garantir que cada conversão iterada, etc., esteja em uma nova instância de memória.

Sobrescrever arquivos convertidos no local

@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

Saída de arquivos convertidos em um diretório de saída

@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

Mais recursos

por 21.09.2016 / 06:06