0

画像ファイルを取得して指定された幅にサイズ変更するが、元の画像ファイルの高さと幅の比率を維持する自動化アプリを作成しようとしています。

私はbashで一口を使おうとしていますが、どこが間違っているのかわかりません。Google で BASH や sip を参照するものが見つかりません。

渡された画像の高さと幅を取得し、比率を計算してから、ターゲットの幅とターゲットの高さ (ターゲットの幅と比率から計算) を使用して画像のサイズを変更しようとしています。

これは私の現在のシェルスクリプトで、画像を次のように渡していますPass input: as arguments.

 height=`sips --getProperty pixelHeight $@`
 width=`sips --getProperty pixelWidth $@`
 ratio=height/width
 targetWidth=262
 targetHeight=targetWidth*ratio

 sips --resampleHeightWidth targetHeight targetWidth $@

これが正しい方法であるかどうかさえわからないので、提案があれば役に立ちます。

4

1 に答える 1

0

--resampleWidthまたはを使用できます-Z

sips --resampleWidth 262 "$@" # make smaller or larger so that the width is 262 px
sips -Z 262 "$@" # make smaller or larger so that the longer sides are 262 px

小さい画像のアップスケーリングを防ぎたい場合は、この回答を参照するか、ImageMagick を使用してください。sips は、追加のシャープ化を行わないと画像がぼやけて見えることがよくあると思いますが、ImageMagick では、さまざまなリサンプリング フィルターを選択することもできます。

mogrify -filter lanczos2 -resize '262>' "$@"

mogrifyconvertその場で画像を変更するのバージョンです。(2-lobed Lanczos) は、 (3-lobed Lanczos、ある時点でダウンスケーリングのデフォルト フィルターになった)lanczos2よりも画像のシャープさをわずかに低下させます。幅が 262 ピクセルになるように、幅が 262 ピクセルを超える画像のサイズを変更します。lanczos262>

于 2013-06-14T14:03:15.607 に答える