Imagemagickバッチ変換メモリオーバーロード


3

私はjp2からjpgに約10億の画像を変換する必要があります...

このような.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以上のウィンドウを変換すると、空きメモリなどのエラーがスローされます...そのメモリがより人道的に使用されるようにするにはどうすればよいですか?それで、そのイメージコンバーター?はいの場合、そのメモリを解放します。

今、私はコンコルの空きメモリエラーとウィンドウのスローエラーも取得します...

また、制限メモリ0を削除した場合-制限マップ0にも同じ問題があります...


@ brabertaser19の最新情報....私が提供した回答を確認し、問題に関するフィードバックを提供する機会がまだあるかどうか興味があります。生活。あなたがまだそれを見直す機会を得たならば、あなたが私がすでに提供したものがまだ助けていないならば、あなたは私を助けるために無料で手に入れました。それ以外の場合は、それ自体を考慮し、提供された回答の右上にある灰色のチェックマークを確認し、そのことを緑色に変えます。
ピンプジュースIT

回答:


0

以下は私にとってうまく機能するので、特定のケースでこれらのコマンドのメモリの問題を解決するのに役立つと思われる場合は、答えを提供します。

あなたの例はFOR / Dループを使用し、それを使用して別のFORループに反復することを知っていますが、DIRコマンドと適用可能なスイッチとともに単一のFOR / 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

さらなるリソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.