Предварительный просмотр камеры с прозрачной областьюIOS

Программируем под IOS
Ответить
Anonymous
 Предварительный просмотр камеры с прозрачной областью

Сообщение Anonymous »

Я хочу создать полноэкранный предварительный просмотр камеры, где середина изображения представляет собой прямоугольник. Все внутри прямоугольника должно быть непрозрачным, а все снаружи — полупрозрачным:
[img]https: //i.sstatic.net/zXuR365n.jpg[/img]

Сплошные линии обозначают непрозрачные части предварительного просмотра (серый прямоугольник), а пунктирные линии — полупрозрачные. -прозрачные части.
В настоящее время я использую стандартный AVCaptureVideoPreviewLayer, но не вижу способа применить альфу к вывод, не говоря уже о применении альфа только к некоторым областям. Возможно ли это?

ОБНОВЛЕНИЕ:
Работа MRE:

Код: Выделить всё

import SwiftUI
import AVFoundation

class CameraViewController: UIViewController {
var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!

override func viewDidLoad() {
super.viewDidLoad()

captureSession = AVCaptureSession()
captureSession.sessionPreset = .photo

guard let backCamera = AVCaptureDevice.default(for: .video) else { return }

do {
let input = try AVCaptureDeviceInput(device: backCamera)
if captureSession.canAddInput(input) {
captureSession.addInput(input)
}
} catch {
print("Error: Unable to initialize back camera: \(error.localizedDescription)")
}

previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.videoGravity = .resizeAspectFill
previewLayer.frame = view.layer.bounds

view.layer.addSublayer(previewLayer)

captureSession.startRunning()
}
}

struct CameraView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> CameraViewController {
return CameraViewController()
}

func updateUIViewController(_ uiViewController: CameraViewController, context: Context) {}
}

struct ContentView: View {
var body: some View {
ZStack {
CameraView()
.edgesIgnoringSafeArea(.all)
}
}
}
Я обнаружил, что AVCaptureVideoPreviewLayer имеет свойство непрозрачности, которое можно настроить, чтобы сделать предварительный просмотр прозрачным, но до сих пор не вижу способа сделать непрозрачный прямоугольник.
п>

Подробнее здесь: https://stackoverflow.com/questions/786 ... arent-area
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»