2

画面解像度のPNGに変換する必要がある600 dpi TIFF(CCITT Group IV、白黒)のフォルダーがいくつかあります。したがって、ImageMagickの用語では、形式を変換して画像を〜80 dpiに再サンプリングする必要があります。私の最初のアプローチは、単一の mogrify コマンドでこれを実行することでした (これは Mac OS X の bash にあります)。

for folder in $(find * -maxdepth 0 -type d ); \
  do mogrify -path "$folder/medium" -format png -resample 31.5% "$folder/tiff/*.tif"; \
done

しかし、結果はひどいものでした。結果の画像のテキストは完全に判読できませんでした。そこで、これを 2 段階のプロセスに変更しました。(1) TIFF を元の解像度で PNG に変換し、次に (2) 解像度をダウンサイジングします。

for folder in $(find * -maxdepth 0 -type d ); \
  do mogrify -path "$folder/medium" -format png "$folder/tiff/*.tif"; \
  mogrify -resample 31.5% "$folder/medium/*.png"; \
done

このプロセスは 80 dpi で素晴らしく鮮明な結果をもたらしましたが、解像度を下げる前にフル解像度のファイルをディスクに書き込んでいるため、プロセスははるかに遅くなりました。

ワンステップで変換と解像度のダウンサイジングを達成するための最良の方法について誰か提案がありますか?

4

2 に答える 2

1

sips ツールは次のように使用できます。

sips -s format png -s dpiHeight 80 -s dpiWidth 80 -z 1200 1600 test.tiff --out test.png

結果の .png では、DPI 設定は変更されていないようです。

また、サイズを変更するときは、入力画像のパーセンテージではなく、出力画像の絶対ピクセル寸法のみを指定できるようです。したがって、入力画像の寸法を取得し、新しいサイズを明示的に計算する必要があります。

#!/bin/bash

infile=test.tiff
outfile=test.png
pct=31 # only whole numbers for bash arithmetic

height=$(sips -g pixelHeight $infile | tail -1 | cut -d: -f2)
width=$(sips -g pixelWidth $infile | tail -1 | cut -d: -f2)
sips -s format png -s dpiHeight 180 -s dpiWidth 180 -z $((height*pct/100)) $((width*pct/100)) 1600 $infile --out $outfile
于 2013-09-20T18:18:21.037 に答える
1

私はパーティーに遅れていることを知っていますが、これを見ていて、一度に両方のセットを行うとなぜ品質が低下するのか疑問に思いました. mogrifyではなく、使用に問題があるのではないかと思い、convert改善を試みることにしました。したがって、これは私の最初で最高の試みです。

#!/bin/bash
for f in */tiff/*.tif; do
   out="${f%tif}png"        # replace "tif" suffix with "png"
   out=${out/tiff/medium}   # replace "tiff" directory with "medium"
   convert "$f" -resample 31.5% "$out"
done

それでもうまくいかない場合は、ファイルをディスクに書き込んでから再サンプリングすることを回避し、代わりにPNGを書き込み、それをリサンプリングしてディスクに書き込むstdout秒にパイプする2回目の試みに行くことができますconvert-それによって大きな中間PNGのディスクへの書き込みを回避します。

#!/bin/bash
for f in */tiff/*.tif; do
   out="${f%tif}png"        # replace "tif" suffix with "png"
   out=${out/tiff/medium}   # replace "tiff" directory with "medium"
   convert "$f" PNG:- | convert - -resample 31.5% "$out"
done
于 2015-04-10T08:29:12.513 に答える