Waka blog.

HEIFからWebPに直接変換するスクリプト

iPhoneで撮影した画像をwebpに変換して軽量化したいので、既存のライブラリを組み合わせてHEIFからWebPに直接変換するスクリプトを書いてみました。

  • HEIFとは
    • 画像ファイル形式。High Efficiency Image File Formatの略。
    • 圧縮効率に優れており、高画質のままファイル容量を小さく抑えることができるらしい。
    • iPhoneで撮影した画像はデフォでHEIF。iPhone13Proで普通に撮影していると1枚2MB〜3MBぐらいでブログに上げるにはやや重い。
  • WebPとは
    • Googleが開発した画像ファイル形式。さらに高圧縮。
    • Google PageSpeed Insightsを使っていると画像ファイルをWebPにして容量減らせと言われる。

HEIFをWebPに変換するには一旦HEIFをjpegに変換して、その後WebPに変換する必要がある。

以下の2つのアプリをインストールしてスクリプト内で使用する

実際のスクリプトは以下です

#!/bin/bash

# 引数のチェック
if [ $# -lt 1 ]; then
    echo "Usage: $0 <file or directory> [quality]"
    exit 1
fi

# 画質の設定、デフォルト80
quality=${2:-80}

# 引数がディレクトリの場合
if [ -d "$1" ]; then
    for file in "$1"/*.heic; do
        # HEICをJPEGに変換
        heif-convert "$file" temp.jpg
        # JPEGをWebPに変換
        cwebp -q $quality temp.jpg -o "${file%.heic}.webp"
    done
    # 一時ファイルの削除
    rm temp.jpg
# 引数がファイルの場合
elif [ -f "$1" ]; then
    # HEICをJPEGに変換
    heif-convert "$1" temp.jpg
    # JPEGをWebPに変換
    cwebp -q $quality temp.jpg -o "${1%.heic}.webp"
    # 一時ファイルの削除
    rm temp.jpg
else
    echo "$1 is not a valid file or directory"
    exit 1
fi

以下のように使用します

# スクリプトに実行権限を与える(初回のみ)
chmod +x heif-to-webp.sh

#ディレクトリと画質を指定して実行
sh heif-to-webp.sh ~/YourDirectory 30

gitリポジトリ

https://github.com/waka-apps/heif-to-webp