macでディレクトリ内のpngファイルのファイル容量(MB)、ファイルサイズ(px)、解像度(dpi)をターミナルに出力する
下記コマンドなどを用いて画像の大量保存に適した方法で軽量化する convert sips du mdls open 軽量化した後のファイル容量(MB)、ファイルサイズ(px)、解像度(dpi)をターミナルに出力する
その他、画像のデータ量を知るのに役立つ情報があれば追加で出力するChatGPT
以下のコマンドを使って、指定された操作を行い、画像ファイルの情報を取得し、軽量化した後の情報も表示できます。
まず、指定ディレクトリ内のPNGファイルの情報を出力します。
for file in /path/to/directory/*.png; do
filename=$(basename "$file")
filesize=$(du -h "$file" | cut -f1)
dimensions=$(sips -g pixelWidth -g pixelHeight "$file" | awk '/pixel/{printf "%s x %s", $2, $4}')
resolution=$(sips -g dpiWidth -g dpiHeight "$file" | awk '/dpi/{printf "%s x %s", $2, $4}')
echo "File: $filename"
echo "File Size: $filesize"
echo "Dimensions: $dimensions"
echo "Resolution: $resolution"
echo "---"
done
次に、軽量化した後の情報を出力します。
for file in /path/to/directory/*.png; do
convert "$file" -resize 50% "${file%.png}_resized.png"
resized_filesize=$(du -h "${file%.png}_resized.png" | cut -f1)
resized_dimensions=$(sips -g pixelWidth -g pixelHeight "${file%.png}_resized.png" | awk '/pixel/{printf "%s x %s", $2, $4}')
resized_resolution=$(sips -g dpiWidth -g dpiHeight "${file%.png}_resized.png" | awk '/dpi/{printf "%s x %s", $2, $4}')
echo "File: ${file%.png}_resized.png"
echo "Resized File Size: $resized_filesize"
echo "Resized Dimensions: $resized_dimensions"
echo "Resized Resolution: $resized_resolution"
echo "---"
done
これにより、指定したディレクトリ内のPNGファイルの情報を取得し、軽量化した後の情報も表示されます。また、sipsコマンドを使用して画像の解像度も取得します。必要に応じてこれをカスタマイズして使用してください。
以下の処理についてステップごとに説明してください。
for file in /path/to/directory/*.png; do
filename=$(basename "$file")
filesize=$(du -h "$file" | cut -f1)
dimensions=$(sips -g pixelWidth -g pixelHeight "$file" | awk '/pixel/{printf "%s x %s", $2, $4}')
resolution=$(sips -g dpiWidth -g dpiHeight "$file" | awk '/dpi/{printf "%s x %s", $2, $4}')
echo "File: $filename"
echo "File Size: $filesize"
echo "Dimensions: $dimensions"
echo "Resolution: $resolution"
echo "---"
done
for file in /path/to/directory/*.png; do
convert "$file" -resize 50% "${file%.png}_resized.png"
resized_filesize=$(du -h "${file%.png}_resized.png" | cut -f1)
resized_dimensions=$(sips -g pixelWidth -g pixelHeight "${file%.png}_resized.png" | awk '/pixel/{printf "%s x %s", $2, $4}')
resized_resolution=$(sips -g dpiWidth -g dpiHeight "${file%.png}_resized.png" | awk '/dpi/{printf "%s x %s", $2, $4}')
echo "File: ${file%.png}_resized.png"
echo "Resized File Size: $resized_filesize"
echo "Resized Dimensions: $resized_dimensions"
echo "Resized Resolution: $resized_resolution"
echo "---"
done
提供されたコードは、指定したディレクトリ内のPNGファイルに対して情報取得と軽量化の処理を行うスクリプトです。以下にそれぞれのステップを説明します。
- 最初のループ (情報取得):
for file in /path/to/directory/*.png; do: 指定したディレクトリ内のPNGファイルに対してループを実行します。filename=$(basename "$file"): ファイルのパスからファイル名のみを抽出してfilenameに格納します。filesize=$(du -h "$file" | cut -f1):duコマンドを使ってファイルの容量を取得し、-hフラグで容量を人間が読みやすい形式で表示し、cutコマンドでファイルサイズの部分だけを取得します。dimensions=$(sips -g pixelWidth -g pixelHeight "$file" | awk '/pixel/{printf "%s x %s", $2, $4}'):sipsコマンドを使ってファイルの幅と高さを取得します。awkコマンドを使って”pixel”というキーワードを含む行から幅と高さを取得し、printf関数で表示形式を調整します。resolution=$(sips -g dpiWidth -g dpiHeight "$file" | awk '/dpi/{printf "%s x %s", $2, $4}'):sipsコマンドを使ってファイルの解像度を取得します。同様にawkコマンドを使って”dpi”というキーワードを含む行から解像度を取得し、printf関数で表示形式を調整します。echo "File: $filename": ファイル名を表示します。echo "File Size: $filesize": ファイルサイズを表示します。echo "Dimensions: $dimensions": ファイルの幅と高さを表示します。echo "Resolution: $resolution": ファイルの解像度を表示します。echo "---": 区切り線を表示して、次のファイルの情報に移ります。
- 2つめのループ (軽量化と情報取得):
convert "$file" -resize 50% "${file%.png}_resized.png":convertコマンドを使ってファイルを50%のサイズにリサイズし、ファイル名に”_resized”を追加して新しいファイルを作成します。- 同じように、リサイズされたファイルの情報を取得します(ファイルサイズ、幅、高さ、解像度)。
- 各情報を表示します。
このスクリプトを実行することで、指定したディレクトリ内のPNGファイルの情報を取得し、その後リサイズしたファイルを作成してリサイズ後の情報を取得します。これにより、画像ファイルの情報を収集し、リサイズによるファイルサイズや解像度の変化を確認できます。