天天看點

shell技巧2 - 圖檔旋轉縮放轉換格式等

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 ,如若轉載,請注來源