2012-03-26 8 views
1

読んでいただきありがとうございます。私はImageMagickを比較するために書いたスクリプトにパフォーマンス上の問題があります。ImageMagickの比較シェルスクリプトがハングするようです。

これはスクリプトです:

#!/bin/sh 

find */ -name '*.tif' > temp-tif-list.txt 

FILE="temp-tif-list.txt" 

exec 3<&0 
exec 0<$FILE 
while read line 
do 
    J2K=`echo "$line" | sed 's/.tif/.jp2/'` 
    PSNR=`compare -quiet -metric psnr $line $J2K null: 2>&1 | cut -d . -f 1` 
    VALUE=45 
    if [ "$PSNR" -le "$VALUE" ] 
    then 
     echo "possible problem with $line... compare value is $PSNR" >> visual-check.txt 
     continue 
    fi 
done 
echo "Deleting generated files..." 
rm -f temp-tif-list.txt 
exec 0<&3 

このスクリプトは次のようになりますディレクトリ構造に対して実行されている:

foo/ 
     foo-1.tif 
     foo-1.jp2 
     foo-2.tif 
     foo-2.jp2 
    foo2/ 
     foo2-1.tif 
     foo2-1.jp2 
     foo2-2.tif 
     foo2-2.jp2 
    ... 
    ... 
    etc 

すべてはかなり迅速にうまくいきません。スクリプトがfoo-1.tifとfoo-1.jp2の比較を開始すると、ハングするように見えます(CPUは799%にジャンプします)。どんな提案も大歓迎です!

乾杯!

EDIT:ImageMagickが複数のページを持つTIFFでスタックしていました。

PSNR=`compare -quiet -metric psnr $line[0] $J2K null: 2>&1 | cut -d . -f 1` 

に次の

PSNR=`compare -quiet -metric psnr $line $J2K null: 2>&1 | cut -d . -f 1` 

を変更すると、わずかに多くの機能スクリプトへの道であると思われます。

+0

手動でコマンドを実行して、スクリプトがハングしている場所を確認します。 ImageMagickは、JPX圧縮でイメージを圧縮しようとすると自分のコンピュータをフリーズするので、バグかもしれません。 – Blender

+0

ImageMagickが複数のページを持つTIFFで動かなくなっていたことが判明したので、@Blenderに感謝します。 23行の '$ line'を' $ line [0] 'に変更すると、私はもう少し近くなります。乾杯! – CanOfBees

答えて

1

どういうわけか、私が働いているTIFFの中には、複数のページ画像があります。それが起こって、なぜ私が判断することができるまで、回避策は、このようなものになります。

compare -metric psnr TIFF-NAME-TIF[0] DERIVATIVE-NAME-EXT 

[0]は、TIFFの最初のページを使用するためにはImageMagickを伝えます。

関連する問題