2017-01-07 4 views
1

Image Magikの「変換」から他のコマンドラインプログラムにJPEGファイルをパイプして、ベンチマークを作成しようとしています。ディスクからファイルを読み込むのではなく、パイプから読み込む機能を内蔵していないプログラムを強制する方法はありますか?画像ストリームをBashのコマンドラインプログラムにパイプする

「CJPEG」などの内蔵機能であるたプログラムの例:

convert INFILE.JPG tga:- | cjpeg -outfile OUTFILE.JPG -targa 

「ないプログラムの例:理想的

jpegoptim --dest OUTFOLDER INFILE.JPG 

それが働くだろう(それはない)このように:

convert INFILE.JPG jpg:- | jpegoptim --dest OUTFOLDER - 

私はこのかかわらを行うために管理しました

BASE64_IMG=$(convert INFILE.JPG jpg:- | base64) 

そして:

JPG<(echo "${BASE64_IMG}" | base64 --decode) /dev/stdin | awk '{print $1}' 

しかし、私はそれで何をすべきかわからない...任意の助け

感謝を。

+1

私のバージョンの 'jpegoptim'には標準入力から読み込むためのオプション' --stdin'があります。また、標準入力から読み込むために '-'を処理します。 –

+0

使用しているバージョン番号は何ですか? – Roger

+0

'jpegoptim v1.4.1 x86_64-pc-linux-gnu'です。 –

答えて

1

の場合、読み込みプログラムは入力内のランダムな位置にシークできるとは考えられません。

不正なバージョン(標準入力を意味するファイル名として-を受け入れるようにプログラムを書く必要があります。これはシェルがあなたのために行うものではありません)。

convert INFILE.JPG jpg:- | jpegoptim --dest OUTFOLDER - 

jpegoptim --dest OUTFOLDER <(convert INFILE.JPG jpg:-) 

<(...)なっ名前付きパイプの使用を簡素化するための特別なbash構文です。

mkfifo input      # Create a named pipe called "ipnut" 
convert INFILE.JPG jpg:- > input & # Start writing to it in the background 
jpegoptim --dest OUTFOLDER input # Read from the named pipe; convert blocks until jpegoptim opens the pipe for reading 
rm input       # Clean up after you are done 
+0

上記の手順を実行しても、正しく動作させることができませんでした。 – Roger

関連する問題