MacでPNG画像を一括リサイズする方法|sipsで任意サイズに無料変換

カテゴリ: Mac

タグ: macOS Mac sips PNG 画像リサイズ 一括変換

目次

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

を実行してください。