0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SNS用の9:16縦型画像をPythonで作る + アニメ目セルフィーをきれいに仕上げる撮影Tips

0
Posted at

インスタのストーリーズやTikTok、リールなど、縦長の9:16画像を使う場面が増えました。ところがスマホの写真は4:3が基本なので、そのまま載せると上下に余白が出たり、勝手にトリミングされて顔が切れたりします。

この記事では、

  1. Pillowで写真を中央クロップして1080×1920にする短いスクリプト
  2. AIでアニメ目加工をするときに、元写真をどう撮るときれいに仕上がるか

をまとめます。後半は、セルフィーの片目を星やハートのアニメ目にする Anime Star Eyes(animeselfie.com) のようなAIフィルターを使う前提で書いていますが、ほかの顔加工系ツールにもだいたい当てはまる内容です。

9:16と1080×1920

縦型SNSの標準的なサイズは 1080×1920px(9:16) です。これより小さいと拡大されてぼやけ、比率が違うとアプリ側で切り取られます。最初から9:16に揃えておくのが一番確実です。

Pillowで中央クロップ+リサイズ

pip install Pillow だけで動きます。

from pathlib import Path
from PIL import Image, ImageOps

TARGET_W, TARGET_H = 1080, 1920  # 9:16


def to_vertical_916(src: str, dst: str, quality: int = 90) -> None:
    img = Image.open(src)
    img = ImageOps.exif_transpose(img)  # スマホ写真の回転情報を反映
    img = img.convert("RGB")

    w, h = img.size
    target_ratio = TARGET_W / TARGET_H
    if w / h > target_ratio:
        # 横に広い → 左右を削る
        new_w = int(h * target_ratio)
        left = (w - new_w) // 2
        box = (left, 0, left + new_w, h)
    else:
        # 縦に長い → 上下を削る
        new_h = int(w / target_ratio)
        top = (h - new_h) // 2
        box = (0, top, w, top + new_h)

    img = img.crop(box).resize((TARGET_W, TARGET_H), Image.LANCZOS)

    ext = Path(dst).suffix.lower()
    if ext in (".jpg", ".jpeg"):
        img.save(dst, quality=quality, optimize=True)
    elif ext == ".webp":
        img.save(dst, quality=quality)
    else:
        img.save(dst, optimize=True)
    print(f"{src} {w}x{h} -> {dst} {img.size[0]}x{img.size[1]}, "
          f"{Path(dst).stat().st_size / 1024 / 1024:.2f} MB")


if __name__ == "__main__":
    to_vertical_916("selfie.jpg", "selfie_916.jpg")

実行例(4032×3024の横長写真を入力した場合):

selfie.jpg 4032x3024 -> selfie_916.jpg 1080x1920, ...

ポイントは3つです。

  • ImageOps.exif_transpose:スマホ写真はEXIFの回転情報で縦横を表していることが多く、これを忘れると横倒しのままクロップされます。
  • 比率で分岐:目標より横長なら左右を、縦長なら上下を削ります。どちらも中央基準です。
  • Image.LANCZOS:縮小時の画質が良いリサンプリングです。

中央クロップなので、顔が端に寄っている写真だと切れることがあります。その場合は撮影時に顔を中央に置くか、box の left / top を手動でずらしてください。

ファイル形式と容量

形式 向いている用途 注意点
JPG 写真全般。容量が小さい 保存を繰り返すと劣化する
PNG 劣化させたくない中間ファイル 写真だと容量が大きくなりがち
WebP 画質と容量のバランスが良い 一部の古い環境で非対応

AIツールにアップロードする場合は、対応形式と容量上限を確認しておきましょう。たとえばanimeselfie.comはJPG/PNG/WebPで10MBまでです。最近のスマホのPNGはこれを超えることがあるので、迷ったら高品質(quality=90前後)のJPGで書き出すのが無難です。スクリプトの最後に容量を表示しているのはそのためです。

なお、AI側で9:16に出力してくれるツールなら、元写真を事前にクロップする必要はありません。ただ、顔周りの余白をコントロールしたいときには、自分で整えてから渡すと構図が安定します。

アニメ目セルフィーをきれいに仕上げる撮影Tips

片目だけをアニメ目に置き換えるタイプの加工は、AIが「目の位置と形」を正確に捉えられるかで仕上がりが大きく変わります。以下は顔のランドマーク検出が一般的に苦手とする条件を避けるための工夫です(特定サービスの内部処理を知っているわけではありません)。

ライティング

  • 顔の正面からの柔らかい光が理想です。窓際で窓の方を向くと、自然光がきれいに入ります。
  • 真上からの照明は目の周りに影が落ち、まぶたの輪郭が分かりにくくなります。
  • 逆光は顔が暗くつぶれるので避けましょう。
  • 目にキャッチライト(光の映り込み)が入っていると、加工後もいきいきとした印象になりやすいです。

角度

  • ほぼ正面、または少しだけ斜めがおすすめです。横顔に近いと奥側の目が小さくなり、加工が不自然になりがちです。
  • カメラは目線の高さか、やや上から。極端なあおりは避けます。
  • 目はしっかり開けて、前髪やメガネのフレームが目にかからないようにします。前髪が瞳にかかっていると、アニメ目が髪の上に描かれたように見えることがあります。

解像度とピント

  • ズームを使わず、メインカメラの等倍で撮ります。デジタルズームは解像度が落ちます。
  • ピントは目に合わせます。スマホなら画面上の目をタップすればOKです。
  • ビューティーフィルターや強いノイズ除去は、まつ毛やまぶたのディテールを消してしまうので、加工前はオフにしておくのが無難です。
  • 顔が画面のある程度の大きさを占めるように撮ると、目の部分のピクセル数が増えて細部まできれいに出ます。

構図

  • 9:16で使う前提なら、縦向きで撮り、顔を中央より少し上に置くと、ストーリーズのUIと重なりにくくなります。
  • 背景はシンプルなほうが、アニメ風のステッカーなどが乗ったときにごちゃつきません。

Anime Star Eyesについて簡単に

参考までに、記事中で例に挙げたサービスの概要です(公式サイトの記載による)。

  • 大人のセルフィー1枚から、片目を星・ハート・白黒マンガ風のアニメ目に置き換え
  • 髪型や服装をもとにしたオリジナルキャラ「アニメツイン」のステッカー付き
  • 出力は2K・9:16、透かしなし、アップロードはデフォルト非公開
  • 18歳以上向け、有料のクレジット制(1枚3クレジット、月額9.99ドルから)

まとめ

  • 縦型SNS用は1080×1920(9:16)に揃える。Pillowなら数十行で自動化できる
  • EXIFの回転情報と、ファイル形式・容量上限に注意
  • AI加工の元写真は「正面の柔らかい光・ほぼ正面の角度・目にピント・目にかかるものなし」が基本

元写真の質を少し上げるだけで、AI加工の仕上がりはかなり変わります。ぜひ試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?