MacでPNG画像を一括リサイズする方法|sipsで任意サイズに無料変換
カテゴリ: Mac
タグ:
目次
MacでPNG画像のサイズを変更したい場合、専用の画像編集ソフトをインストールしなくても、macOS標準のsipsコマンドを利用できます。
sipsを使えば、
- PNG画像を指定したサイズへ変更
- 複数画像をまとめて一括リサイズ
- 元画像を残して別名保存
- 縦横比を維持して縮小
- ターミナルを使わずドラッグ&ドロップで変換
といった処理ができます。
この記事では、MacでPNG画像を任意のサイズへリサイズする基本的な方法から、複数画像の一括処理まで紹介します。
結論
MacでPNG画像を指定したサイズへ変更する場合は、次のsipsコマンドを使用します。
sips -z 高さ 幅 input.png --out output.png
例えば、画像を横1200px・縦800pxへ変更する場合は、
sips -z 800 1200 input.png --out output.png
とします。
注意点として、-zの指定順は、
高さ 幅
です。
一般的な「横×縦」の表記とは逆なので注意してください。
sipsはmacOSに標準搭載されているため、追加のアプリやツールをインストールする必要はありません。
sipsとは
sipsは、macOSに標準搭載されている画像処理用のコマンドです。
正式には、
Scriptable Image Processing System
と呼ばれます。
ターミナルから画像に対して、
- サイズ変更
- 画像形式の変換
- 画像サイズの確認
- 回転
- 反転
- クロップ
などの処理を行えます。
追加ソフトをインストールせずに利用できるため、ちょっとした画像変換や大量画像の一括処理に便利です。
PNG画像の現在のサイズを確認する
リサイズする前に、現在の画像サイズを確認することもできます。
次のコマンドを実行します。
sips -g pixelWidth -g pixelHeight input.png
例えば、
pixelWidth: 2400
pixelHeight: 1600
と表示された場合は、
横2400px × 縦1600px
の画像です。
PNG画像を任意のサイズへリサイズする
基本的な書き方は次の通りです。
sips -z 高さ 幅 元画像 --out 出力画像
例えば、
横1200px × 縦800px
へ変更したい場合は、
sips -z 800 1200 input.png --out output.png
とします。
正方形へ変更する場合
例えば、
512 × 512px
へ変更するなら、
sips -z 512 512 input.png --out output.png
です。
同様に、
1024 × 1024px
なら、
sips -z 1024 1024 input.png --out output.png
と指定できます。
任意のピクセル数へ変更できるため、用途に応じて数値を変更してください。
sipsの高さと幅の指定順に注意
sips -zでは、
sips -z 高さ 幅
の順番で指定します。
例えば、
横1920px
縦1080px
へ変更したい場合、
sips -z 1080 1920 input.png --out output.png
となります。
間違えて、
sips -z 1920 1080
とすると、
横1080px
縦1920px
になります。
縦長画像と横長画像では特に間違えやすいポイントです。
元画像を残したままリサイズする
画像を変換するときは、元ファイルを残しておくことをおすすめします。
例えば、
photo.png
という画像を変換し、
re_photo.png
として保存する場合は、
sips -z 800 1200 photo.png --out re_photo.png
とします。
変換後は、
photo.png
re_photo.png
の両方が残ります。
元画像を誤って上書きする心配がありません。
複数のPNG画像を一括リサイズする
画像が数十枚、数百枚ある場合、1枚ずつコマンドを実行するのは大変です。
Macのターミナルでは、forを使って複数のPNG画像を一括リサイズできます。
例えば、
横1200px × 縦800px
へまとめて変換する場合は、
for file in *.png; do
sips -z 800 1200 "$file" --out "re_$file"
done
とします。
例えば元のファイルが、
01.png
02.png
03.png
だった場合、実行後は、
01.png
02.png
03.png
re_01.png
re_02.png
re_03.png
となります。
任意のサイズに変更する場合
一括リサイズでも、変更したいサイズに応じて数字を書き換えるだけです。
例えば、
600×600px
for file in *.png; do
sips -z 600 600 "$file" --out "re_$file"
done
1920×1080px
for file in *.png; do
sips -z 1080 1920 "$file" --out "re_$file"
done
1242×2688px
for file in *.png; do
sips -z 2688 1242 "$file" --out "re_$file"
done
このように、目的のサイズに合わせて自由に変更できます。
フォルダ内の画像を一括処理する
例えば、デスクトップ上の、
images
フォルダに画像がある場合は、ターミナルでそのフォルダへ移動します。
cd ~/Desktop/images
その後、
for file in *.png; do
sips -z 800 1200 "$file" --out "re_$file"
done
などを実行します。
これで、そのフォルダ内のPNG画像をまとめて変換できます。
縦横比を維持して横幅だけ変更する
写真の場合、
横1200px × 縦800px
のようにサイズを固定すると、元画像の縦横比によっては画像が変形してしまいます。
その場合は、横幅だけを指定できます。
例えば、横幅を1200pxへ変更する場合は、
sips --resampleWidth 1200 input.png --out output.png
とします。
高さは元画像の縦横比に合わせて自動的に変更されます。
写真の縮小では、この方法が便利です。
長辺を指定して縦横比を維持する
縦長画像と横長画像が混在している場合は、-Zを利用できます。
例えば、
sips -Z 1200 input.png --out output.png
とすると、縦横比を維持したまま長辺が最大1200pxになるようリサイズされます。
例えば、
2400 × 1600
の画像なら、おおよそ、
1200 × 800
になります。
一方で縦長画像なら、高さ側が1200pxになります。
写真を大量に縮小するときなどに便利です。
-zと-Zの違い
sipsでは、-zと-Zで挙動が大きく異なります。
-z:縦と横のサイズを指定
sips -z 800 1200 input.png --out output.png
指定した、
高さ800px
幅1200px
へ変更します。
サイズを厳密に指定したい場合に向いています。
例えば、
- Webサイト用画像
- アプリ用画像
- アイコン
- SNS用画像
- 指定サイズの素材
などです。
ただし、元画像と指定サイズの縦横比が異なる場合、画像が変形する可能性があります。
-Z:縦横比を維持して最大サイズを指定
sips -Z 1200 input.png --out output.png
こちらは縦横比を維持したままサイズを変更します。
写真など、
画像を変形させたくない
場合はこちらが向いています。
用途によって使い分ける
おおまかには次のように考えると分かりやすいです。
| やりたいこと | コマンド |
|---|---|
| 横・縦を指定したサイズにする | -z |
| 横幅だけ指定する | --resampleWidth |
| 縦横比を維持して縮小する | -Z |
| 現在の画像サイズを確認する | -g pixelWidth -g pixelHeight |
ドラッグ&ドロップでPNG画像をリサイズする
毎回ターミナルからコマンドを入力するのが面倒な場合は、.commandファイルを作成する方法もあります。
例えば、
resize_png.command
というファイルを作成します。
以下は、複数のPNG画像をドラッグ&ドロップすると指定サイズへ変更する例です。
#!/bin/zsh
WIDTH=1200
HEIGHT=800
if [ "$#" -eq 0 ]; then
echo "PNG画像をこのファイルにドラッグ&ドロップしてください。"
read
exit 1
fi
for file in "$@"; do
extension="${file##*.}"
if [[ "${extension:l}" != "png" ]]; then
echo "PNGではないためスキップします: $file"
continue
fi
dir=$(dirname "$file")
filename=$(basename "$file")
output="${dir}/re_${filename}"
echo "変換中: $filename"
sips -z "$HEIGHT" "$WIDTH" "$file" --out "$output"
echo "作成しました: $output"
done
echo "完了しました。"
read
リサイズするサイズを変更する
このスクリプトでは、
WIDTH=1200
HEIGHT=800
の部分だけ変更すれば、任意のサイズにできます。
例えば、
1920 × 1080px
にしたければ、
WIDTH=1920
HEIGHT=1080
とします。
正方形の、
512 × 512px
なら、
WIDTH=512
HEIGHT=512
です。
コマンド本体を変更する必要はありません。
.commandファイルに実行権限を付ける
作成した.commandファイルには、初回だけ実行権限を付けます。
ターミナルで、
chmod +x resize_png.command
を実行します。
その後、FinderからPNG画像を.commandファイルへドラッグ&ドロップして利用できます。
複数のPNGファイルをまとめて選択してドラッグ&ドロップすることもできます。
変換後のファイル名
今回のスクリプトでは、
元ファイル
photo.png
に対して、
変換後
re_photo.png
という名前で保存します。
例えば、
001.png
002.png
003.png
を処理すると、
re_001.png
re_002.png
re_003.png
となります。
元画像を残しながら、変換済みのファイルも判別しやすくなります。
リサイズ後の画像サイズを確認する
変換後、本当に指定サイズになっているか確認したい場合は、
sips -g pixelWidth -g pixelHeight output.png
を実行します。
例えば、
pixelWidth: 1200
pixelHeight: 800
と表示されれば、
1200 × 800px
へ正常に変換されています。
Macでsipsを使うメリット
sipsを使うメリットは、Macだけで画像処理を完結できることです。
追加ソフトが不要
macOS標準機能なので、画像リサイズだけのために別のアプリをインストールする必要がありません。
複数画像を一括処理できる
シェルスクリプトと組み合わせれば、数十枚、数百枚の画像もまとめて処理できます。
処理を自動化できる
毎回同じサイズへ変換する場合は、.commandファイルを作っておけば、ドラッグ&ドロップだけで処理できます。
元画像を残せる
--outを使用して別名保存すれば、元画像を残した状態で変換できます。
画像が変形してしまう場合
例えば元画像が、
1920 × 1080px
なのに、
sips -z 1000 1000 input.png --out output.png
とすると、正方形へ強制的に変更されるため画像が変形します。
写真の場合は、
sips -Z 1000 input.png --out output.png
のように、縦横比を維持する方法をおすすめします。
一方、
- アイコン
- アプリ提出用画像
- Webサービスからサイズを指定されている画像
など、正確なピクセルサイズが必要な場合は-zを使います。
JPEGでも使える?
sipsはPNGだけでなく、JPEGなどの画像形式にも利用できます。
例えばJPEG画像をリサイズする場合も、
sips -Z 1200 photo.jpg --out resized_photo.jpg
のように実行できます。
ただし、一括処理するときに、
*.png
としている場合はPNGファイルだけが対象になります。
JPEGを対象にする場合は、
*.jpg
などへ変更する必要があります。
まとめ
Macで画像をリサイズするだけであれば、専用アプリをインストールしなくても、macOS標準のsipsで対応できます。
指定した縦横サイズへ変更する場合は、
sips -z 高さ 幅 input.png --out output.png
を使います。
例えば、
1200 × 800px
なら、
sips -z 800 1200 input.png --out output.png
です。
写真のように縦横比を維持したい場合は、
sips -Z 1200 input.png --out output.png
を利用できます。
さらに複数画像を一括処理したり、.commandファイルを作成したりすることで、普段の画像リサイズ作業を自動化できます。
Macで画像サイズを変更する作業が多い場合は、sipsを覚えておくと便利です。
参考資料
- Apple Developer Documentation
- macOSの
sipsコマンドヘルプ
使用しているMacで利用できるオプションは、ターミナルから次のコマンドでも確認できます。
sips --help
または、
man sips
を実行してください。