Imagemagick 일괄 변환 메모리 과부하

Imagemagick 일괄 변환 메모리 과부하

약 10억 장의 이미지를 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개의 창이 나에게 사용 가능한 메모리 등의 오류가 발생합니다. 메모리가 더 인간적으로 사용되도록 하려면 어떻게 해야 합니까? 그럼 그 이미지 변환기는요? 그렇다면 그 메모리를 해제하세요.... 이것을 다른 것으로 스레드할 수 있는 방법이 있을까요?

이제 concolse free 메모리 오류가 발생하고 창의 던지기 오류도 발생합니다.

또한 Limit memory 0 -limit map 0을 삭제해도 같은 문제가 발생합니다.

답변1

아래 내용은 저에게 효과적이므로 특정 사례에서 이러한 명령에 대한 메모리 문제를 해결하는 데 도움이 될 경우 답변을 제공하겠습니다.

나는 당신의 예가/D에 대해루프를 만들고 이를 사용하여 다른 것으로 반복합니다.을 위한루프이지만 단일 사용/F에 대해와 함께 루프디렉터리명령과 적용 가능한 스위치는 각 반복 변환 등이 새로운 메모리 인스턴스에 있는지 확인하는 데 도움이 되는 것 같습니다.


변환된 파일을 그 자리에서 덮어쓰기

@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

추가 리소스

관련 정보