convert
約2,000枚の画像を含むPDFファイルを作成しています。
convert 0001.miff 0002.miff ... 2000.miff -compress jpeg -quality 80 out.pdf
メッセージと共に出力ファイルが2^31-1バイト(2GB -1)に達すると、プロセスは繰り返し終了する可能性があります。
convert: unknown `out.pdf'.
PDFファイルの仕様約10GBを許可。私はそれからより多くの情報を取得しようとしましたが、-debug all
ログ出力で有用なものを見ませんでした。ファイルシステムは外部3どのファイルサイズは少なくとも16GiB(おそらくそれ以上)まで許可されています。。に関してulimit
はfile size
そうですunlimited
。/etc/security/limits.conf
コメント化された行のみを含めます。また、何がこの問題を引き起こす可能性がありますか?制限を上げるにはどうすればよいですか?
ImageMagickバージョン:6.4.3 2016-08-05 Q16 OpenMP
リリース:SLES 11.4(i586)
答え1
制限は実際にはファイルシステムでは発生しません。またはパッケージバージョンで私の考えでは。
2GBの制限は、オペレーティングシステムの32ビットバージョンによって異なります。
ファイルを追加するオプションは、64ビットバージョンをインストールすることです。ハードウェアがサポートしている場合。
バラより大容量ファイルのサポート
従来、多くのオペレーティングシステムと基本ファイルシステムの実装では、ファイルサイズと場所を表すために32ビット整数を使用していました。したがって、どのファイルも2 32 - 1バイト(4 GB - 1)を超えることはできません。多くの実装では、サイズを符号付き数値として扱うことで問題がさらに悪化し、これにより制限が2 31 - 1バイト(2 GB - 1)にさらに減少します。
答え2
使用されるピクセルキャッシュをconvert
1GiBに制限してみてください。
convert 0001.miff ... 2000.miff -limit memory 1GiB -limit map 1GiB -compress jpeg -quality 80 out.pdf
これにより、ImageMagicがRAMバッファに2GiB以上のデータを合わせようとする代わりに、処理されたデータを定期的にディスクにダンプすることを願っています。
ただし、32ビットLinuxで単一プロセスで使用できる仮想メモリの量は、VMSPLIT
カーネル構成設定によって定義されます。これは、2G / 2G(カーネル用2 GB +ユーザーゾーン用2 GB)または1G / 3G(カーネル用1 GB +ユーザーゾーン用3 GB)です。実行中のシステムでは、以下を使用して設定を見つけることができます。
zcat /proc/config.gz | grep VMSPLIT
一部のシステムでは、カーネル構成が/boot/config-$(uname -r)
ここに保存されます。
答え3
写真が多い場合は、TeX / LaTeXを使用してPDFを作成できます。これにより、コンバータの競合の問題がなくても、同じ結果(画像のPDF)を取得できます。 TeXのファイル制限は、そのシステム(ハードウェア+オペレーティングシステム)にのみ適用する必要があります。
しかし、シェルスクリプトを使ってTeXを書くことができると思います。
0)
mkdir convert
pushd convert
PATH=convert:$PATH /* keep everything in one directory for tidyness.*/
1) テンプレートの作成
1.1)画像名を変数に変更して追加するのではなく、挿入して$FOOをフォーマットして正しい先行ゼロを持つようにこの手順を一度に実行する方法があると確信しています。しかし、以下は私が説明したものです。わかります。
1.2)スクリプトがファイル名を挿入できるようにテンプレートを分割する必要があります。
1.3) nano tmplt1 /* または希望のエディタ*/
/* white space line */
\begin{figure}[h!]
\includegraphics[width=0.5\linewidth]{
/* at this point the script will insert $FOO, the file name variable */
1.3.1)しかし、ファイルは0001.miff … 0010.miff … 0100.miff … 2000.miffになります。つまり、前に来るゼロの可変数です。解決策:tmplt1には、tmplt1-9、tmplt10-99、tmplt100-999、tmplt1000-2000の4つのバージョンがあります。 tmplt1-9 は "...width]{000" で終わります (つまり、3 つのゼロを追加します)。 tmplt10-99 は "...width]{00" で終わります (つまり、2 つのゼロを追加します)。 100-999+1 0, 1000-2000 は tmplt1 と同じです。
1.4) テンプレートの次の部分: nano tmplt2 /* OEOYC */
.miff}
\caption{ /* if you want to caption, otherwise skip to tmplt3.
Same again, script will insert $FOO here */
1.5) テンプレートの次の部分: nano tmplt3 /* OEOYC */
}
\label{f: /*if you want them labelled which is actually
a index/reference for the text to refer to, not a caption.
Same again, the script will insert $FOO here. If you do not
want labels, skip to tmplt4*/
1.6) 次のテンプレート: nano tmplt4 /* OEOYC */
}
\end{figure}
2) ファイルの先頭を作成: nano head /* OEOYC */
\documentclass{article} /* Or more suitable class */
\usepackage{graphicx}
\begin{document}
/* white space line*/
3) ファイル終了: nano foot /*OEOYC */
\end {document}
4) 作成スクリプト: nano loader /* OEOYC */
#! /bin/bash
cat head > out.pdf
for FOO in {1...9}
do
cat tmplt1-9 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt2 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt3 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt4 >> out.pdf
done
for FOO in {10...99}
do
cat tmplt10-99 >> out.pdf /* this looks like a lot but
is actually copy-paste of first block, just add relevant 0's and 9's */
echo "$FOO" | cat >> out.pdf
cat tmplt2 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt3 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt4 >> out.pdf
done
for FOO in {100...999}
do
cat tmplt100-999 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt2 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt3 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt4 >> out.pdf
done
for FOO in {1000...2000}
do
cat tmplt1000-2000 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt2 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt3 >> out.pdf
echo "$FOO" | cat >> out.pdf
cat tmplt4 >> out.pdf
done
cat foot >> out.pdf
5) スクリプトを実行可能にする: chmod u+x ローダー
5.1)テスト後、$ FOOが挿入されるたびに3行にわたって分散することがわかりました。スクリプトに移動してキャリッジリターンを手動で削除する以外に、回避策はありません。 2000枚のうち少なくとも36枚の写真があります。
6)呼び出しスクリプト:ローダー
7)TeXコンパイル:pdflatex out.pdf