1锣吼、前言
在macOS下选浑,如果對(duì)大量圖片進(jìn)行處理或數(shù)據(jù)收集,查找了一下玄叠,通過使用 sips
命令古徒,可以進(jìn)行圖片的大部分操作處理,如果使用 shell
读恃,就可以靈活和自動(dòng)化的批量操作圖片隧膘!
2、sips 用法
常用的用法可以參考: 利器: Mac自帶的圖片工具Sips寺惫,全部的用法可以參考:sips MAN page Man Page - macOS - SS64.com
以下就是引用 利器: Mac自帶的圖片工具Sips 內(nèi)容:
1.裁剪時(shí)固定圖片寬度舀寓,高度自適應(yīng)
```shell
sips -Z 320 iamge_file_name
```
2.裁剪時(shí)指定圖片寬與高
```shell
# 裁剪圖片為400x300大小
sips -z 400 300 iamge_file_name
```
注:需要注意的是這里的參數(shù)是小寫的z,并且圖片縮放方式不是鎖定圖片比例的肌蜻,即如果圖片本身是16:9,則會(huì)導(dǎo)致圖片被擠壓必尼。
3.旋轉(zhuǎn)圖片
```shell
sips -r 90 image_file_name
```
注:上面的命令將圖片順時(shí)針旋轉(zhuǎn)90度蒋搜,相信機(jī)智的你已經(jīng)想到逆時(shí)針90度應(yīng)該是-90了。沒錯(cuò)判莉,順時(shí)針用正數(shù)表示豆挽,逆時(shí)針可以用負(fù)數(shù)表示。你可以進(jìn)行任意角度和方向的旋轉(zhuǎn)券盅。
4.翻轉(zhuǎn)圖片
```shell
sips -f horizontal image_file_name
```
注:上面命令可以對(duì)圖片進(jìn)行水平翻轉(zhuǎn)帮哈,-f支持水平和垂直兩種翻轉(zhuǎn),水平(horizontal)锰镀,垂直(vertical)娘侍。
5.修改圖片格式
```shell
sips -s format jpeg input.png -o output.jpg
```
注:使用-s參數(shù)可以修改圖片格式為指定值咖刃,sips支持jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tga共11種格式。并且-s除了能修改文件格式外憾筏,還能修改圖片的其它meta數(shù)據(jù)嚎杨,具體可以通過man sips查看。
6.獲取圖片meta信息
```shell
sips -g pixelWidth -g pixelHeight image_file_name
```
注:上面命令可以獲取圖片的長(zhǎng)寬高信息氧腰,與-s參數(shù)一樣枫浙,-g也支持更多的meta值,可以參見man sips的信息古拴,這里就不做贅述了箩帚。
3、shell 編程
通過使用 sips
命令進(jìn)行圖片處理黄痪,本來計(jì)劃做一個(gè)功能庫(kù)紧帕,但是想想還是沒有必要,簡(jiǎn)單的寫了一個(gè)圖片旋轉(zhuǎn)的示例满力,希望大家能舉一反三焕参,這都是授魚不如授漁!
4油额、圖片旋轉(zhuǎn)代碼實(shí)現(xiàn)
具體的代碼叠纷,可參考我的Github代碼:
#!/bin/bash
# 定義用到的變量
imagePath=""
angle=""
# 定義讀取輸入字符的函數(shù)
getImagePath() {
echo "\n================================================"
# 監(jiān)聽輸入并且賦值給變量
read -p "Enter image path: " imagePath
# 如果為空值涩嚣,從新監(jiān)聽,否則執(zhí)行旋轉(zhuǎn)函數(shù)
if test -z "$imagePath"; then
getImagePath
else
rotationImage
fi
}
rotationImage() {
echo "\n================================================"
read -p "Enter angle(default 90°): " angle
# 如果為空值掂僵,默認(rèn)設(shè)置為90度
if test -z "$angle"; then
angle="90"
fi
# 使用 sips 命令進(jìn)行圖片旋轉(zhuǎn)
sips -r "${angle}" "${imagePath}"
echo "\n rotation $angle ° finished!"
# 重新調(diào)用旋轉(zhuǎn)函數(shù)航厚,方便多次旋轉(zhuǎn)操作
rotationImage
}
# 首先執(zhí)行函數(shù),給變量賦值
getImagePath
5锰蓬、總結(jié)
比如圖片批量格式轉(zhuǎn)換幔睬,圖片尺寸批量獲取等,通過 ship 命令芹扭,然后結(jié)合 sehll 腳本麻顶,效率和自動(dòng)化不是夢(mèng)!
關(guān)于sips的更多使用場(chǎng)景舱卡,可以看看這篇文章 使用sips命令自動(dòng)縮減圖片尺寸
下一節(jié)辅肾,結(jié)合剛需,打算寫一個(gè)從一張1024的圖片轮锥,自動(dòng)生成Xcode所需要的全部圖標(biāo)矫钓,這應(yīng)該是一個(gè)不錯(cuò)的想法!期待吧~
參考
- 如有疑問,歡迎在評(píng)論區(qū)一起討論新娜!
- 如有不正確的地方赵辕,歡迎指導(dǎo)!
注:本文首發(fā)于 iHTCboy's blog杯活,如若轉(zhuǎn)載匆帚,請(qǐng)注來源