Files
photochk/Sources/Photochk/Core/FeaturePrinter.swift
T
2026-07-27 15:38:11 +00:00

24 lines
924 B
Swift

import Foundation
import Vision
/// Vision の feature print で「見た目の近さ」を測る。
///
/// `perform(on: URL)` は Vision 側が ImageIO でデコードするため、HEIC や RAW もそのまま渡せる。
enum FeaturePrinter {
static func compute(for url: URL) async throws -> FeaturePrintObservation {
var request = GenerateImageFeaturePrintRequest()
// 縦横比が違う版(トリミング・リサイズ)でも比較できるよう、切り取らずに収める。
request.cropAndScaleAction = .scaleToFit
return try await request.perform(on: url)
}
/// 距離は 0 が同一。比較できない組み合わせでは nil を返す。
static func distance(
_ a: FeaturePrintObservation?,
_ b: FeaturePrintObservation?
) -> Double? {
guard let a, let b else { return nil }
return try? a.distance(to: b)
}
}