Как обрабатывать изображение в SwiftUI - PullRequest
0 голосов
/ 27 мая 2020

Я хочу работать с изображением, которое вы делаете с помощью камеры, явно, я хочу работать с матричным изображением, изменять пиксель ... Это мой код, который позволяет вам делать снимок.


import SwiftUI

struct ContentView: View {

    @State private var showImagePicker: Bool = false
    @State private var image: Image? = nil




    var body: some View {
        VStack {

            image?.resizable()
                .scaledToFit()
                .padding(.top,100)
                .frame(width: 300.0, height: 300.0, alignment: .top)


            Button(action: {self.showImagePicker = true

            }) {HStack {
                Image(systemName: "camera.on.rectangle.fill")
                    .font(.title)
                Text("Take picture")
                    .fontWeight(.semibold)
                    .font(.title)
            }
            .padding()
            .background(Color.red)
            .foregroundColor(.white)
            .cornerRadius(40)}





        }
        .padding(.bottom,400)
        .sheet(isPresented: self.$showImagePicker) {
            PhotoCaptureView(showImagePicker: self.$showImagePicker, image: self.$image)
        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()

    }
}

Вот PhotoCaptureView

import Foundation
import SwiftUI

struct PhotoCaptureView: View {

    @Binding var showImagePicker: Bool
    @Binding var image: Image?

    var body: some View {
        ImagePicker(isShown: $showImagePicker, image: $image)
    }
}

#if DEBUG
struct PhotoCaptureView_Previews: PreviewProvider {
    static var previews: some View {
        PhotoCaptureView(showImagePicker: .constant(false), image: .constant(Image("")))
    }
}
#endif

Мне нужно вернуть изображение, я думаю, что оно находится в структуре PhotoCaptureView.

Как получить это изображение и работать с ним? Спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

Вы можете использовать onDismiss completedHandler листа для работы с изображением после его выбора.

.sheet(isPresented: Binding<Bool>.constant(true), onDismiss: {
            if let image = self.image {
                processor.process(image)
            }
        }, content: { () -> View in
            PhotoCaptureView(showImagePicker: self.$showImagePicker, image: self.$image)
        })
...