Swiftパッケージ · v0.1.0

KLSubjectVision

画像から正方形のサムネイルを生成します。被写体を切り抜けるときはApple Visionを使い、抽出できない場合は元画像を使った表示へ自動で切り替えます。

KLSubjectVisionは、被写体の切り抜きと正方形への配置をまとめたSwiftパッケージです。`.subject` は切り抜いた被写体全体を透明な正方形の中に収め、抽出できなかった場合は元画像を正方形いっぱいに配置します。`.room` は、場所や室内写真など、画面全体を残したい画像向けです。

対応OS
iOS 17+ · macOS 14+
開発環境
Swift 6.0+
ライセンス
MIT
外部依存
なし

できること

  • Apple Visionによる前景の切り抜き
  • 余白を指定できる、被写体全体を収める配置
  • 場所写真とフォールバック時は正方形いっぱいに配置
  • テスト用の切り抜き処理を差し替え可能

このパッケージがしないこと

このパッケージが扱うのは `CGImage` の変換だけです。UIImageまたはNSImageの読み込み、画像の向きの補正、タスクの実行管理とキャンセル、エンコード、保存先、キャッシュキー、添付ファイルの管理はアプリ側で行ってください。

SwiftPMで追加

Package.swiftSwift
.package(url: "https://github.com/KoenLee1023/KLSubjectVision.git", from: "0.1.0")

使い方

最小構成Swift
let output = SubjectThumbnailProcessor().process(
    source,
    request: .subject(pixelSize: 512, inset: 28)
)

guard let output else { return }
display(output.image, path: output.kind)
SubjectThumbnailProcessor

共有の可変状態を持たない同期処理です。テストでは `ForegroundExtractor` を差し替えられます。

SubjectThumbnailRequest

被写体を切り抜く `.subject(pixelSize:inset:)` と、画像全体を使う `.room(pixelSize:)` を選べます。

SubjectThumbnailOutput

指定したピクセル寸法の正方形 `CGImage` と、実際に使った処理経路を返します。

デモアプリ

Subject Studio

Apple Visionによる前景の切り抜き · 余白を指定できる、被写体全体を収める配置

Thumbnail Matrix

場所写真とフォールバック時は正方形いっぱいに配置 · テスト用の切り抜き処理を差し替え可能