1、前言
在macOS下,如果對大量圖檔進行處理或資料收集,查找了一下,通過使用
sips
指令,可以進行圖檔的大部分操作處理,如果使用
shell
,就可以靈活和自動化的批量操作圖檔!
2、sips 用法
常用的用法可以參考:
利器: Mac自帶的圖檔工具Sips,全部的用法可以參考:
sips MAN page Man Page - macOS - SS64.com以下就是引用
内容:
1.裁剪時固定圖檔寬度,高度自适應
```shell
sips -Z 320 iamge_file_name
```
2.裁剪時指定圖檔寬與高
```shell
# 裁剪圖檔為400x300大小
sips -z 400 300 iamge_file_name
```
注:需要注意的是這裡的參數是小寫的z,并且圖檔縮放方式不是鎖定圖檔比例的,即如果圖檔本身是16:9,則會導緻圖檔被擠壓。
3.旋轉圖檔
```shell
sips -r 90 image_file_name
```
注:上面的指令将圖檔順時針旋轉90度,相信機智的你已經想到逆時針90度應該是-90了。沒錯,順時針用正數表示,逆時針可以用負數表示。你可以進行任意角度和方向的旋轉。
4.翻轉圖檔
```shell
sips -f horizontal image_file_name
```
注:上面指令可以對圖檔進行水準翻轉,-f支援水準和垂直兩種翻轉,水準(horizontal),垂直(vertical)。
5.修改圖檔格式
```shell
sips -s format jpeg input.png -o output.jpg
```
注:使用-s參數可以修改圖檔格式為指定值,sips支援jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tga共11種格式。并且-s除了能修改檔案格式外,還能修改圖檔的其它meta資料,具體可以通過man sips檢視。
6.擷取圖檔meta資訊
```shell
sips -g pixelWidth -g pixelHeight image_file_name
```
注:上面指令可以擷取圖檔的長寬高資訊,與-s參數一樣,-g也支援更多的meta值,可以參見man sips的資訊,這裡就不做贅述了。
3、shell 程式設計
通過使用
sips
指令進行圖檔處理,本來計劃做一個功能庫,但是想想還是沒有必要,簡單的寫了一個圖檔旋轉的示例,希望大家能舉一反三,這都是授魚不如授漁!
4、圖檔旋轉代碼實作
具體的代碼,可參考我的Github代碼:
#!/bin/bash
# 定義用到的變量
imagePath=""
angle=""
# 定義讀取輸入字元的函數
getImagePath() {
echo "\n================================================"
# 監聽輸入并且指派給變量
read -p "Enter image path: " imagePath
# 如果為空值,從新監聽,否則執行旋轉函數
if test -z "$imagePath"; then
getImagePath
else
rotationImage
fi
}
rotationImage() {
echo "\n================================================"
read -p "Enter angle(default 90°): " angle
# 如果為空值,預設設定為90度
if test -z "$angle"; then
angle="90"
fi
# 使用 sips 指令進行圖檔旋轉
sips -r "${angle}" "${imagePath}"
echo "\n rotation $angle ° finished!"
# 重新調用旋轉函數,友善多次旋轉操作
rotationImage
}
# 首先執行函數,給變量指派
getImagePath
5、總結
比如圖檔批量格式轉換,圖檔尺寸批量擷取等,通過 ship 指令,然後結合 sehll 腳本,效率和自動化不是夢!
關于sips的更多使用場景,可以看看這篇文章
使用sips指令自動縮減圖檔尺寸下一節,結合剛需,打算寫一個從一張1024的圖檔,自動生成Xcode所需要的全部圖示,這應該是一個不錯的想法!期待吧~
參考
- 如有疑問,歡迎在評論區一起讨論!
- 如有不正确的地方,歡迎指導!
注:本文首發于 iHTCboy's blog ,如若轉載,請注來源