Пакетное преобразование Imagemagick перегрузка памяти

Пакетное преобразование Imagemagick перегрузка памяти

Мне необходимо преобразовать около миллиарда изображений из jp2 в jpg...

Я создаю такой .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"
  )
)

но когда он конвертирует более ~ 100 000 окон выдает мне ошибки с свободной памятью и т. д... Как мне сделать так, чтобы память использовалась больше человечества? Так что imageconverter? если да, то освободите эту память.... Может быть, есть способы связать это с чем-то другим?

Теперь я получаю ошибки свободной памяти в Concolse, а также ошибки выброса окна тоже...

Также, если я удаляю limit memory 0 -limit map 0, у меня возникает та же проблема...

решение1

Ниже приведен ответ, который мне помог, поэтому, если вы найдете его полезным для решения проблемы с памятью для этих команд в вашем конкретном случае, я предоставлю вам ответ.

Я знаю, что ваш пример используетДЛЯ /Дцикл и использование его для перехода к другомуДЛЯцикл, но с использованием одногоДЛЯ /Фпетля вместе сДИРкоманда и соответствующие переключатели, по-видимому, помогают гарантировать, что каждое итеративное преобразование и т. д. находится в новом экземпляре памяти.


Перезаписать преобразованные файлы на месте

@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

Вывод преобразованных файлов в выходной каталог

@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

Дополнительные ресурсы

Связанный контент