SwiftUI - 缩放和移动后如何裁剪原始图像(使用 CGImage)?

问题描述 投票:0回答:1

我长期以来一直试图解决这个问题,但我做不到。我将非常感谢您的帮助! 现在我正在努力确定我在屏幕上看到的图像部分的第一个点的坐标(偏移)。

例如,此代码在图像移动后打印偏移量。而且我不明白如何制作,以便当缩放图像时,偏移量也会相应变化。我的意思是,如果我想从同一位置(例如在左边缘)裁剪照片,但比例不同,我不能在这里这样做,因为偏移坐标不相同。

struct ContentView: View {
    @State private var imageScale: CGFloat = 1.0
    @State private var previousScale: CGFloat = 0
    @State private var imageOffset: CGSize = .zero
    @State private var previousOffset: CGSize = .zero

    var body: some View {
        let dragGesture = DragGesture()
            .onChanged { value in
                self.imageOffset.width = value.translation.width + self.previousOffset.width
                self.imageOffset.height = value.translation.height + self.previousOffset.height
            }
            .onEnded { value in
                self.previousOffset = self.imageOffset

                print("Offset: \(imageOffset)")
            }

        let pinchGesture = MagnificationGesture()
            .onChanged { scale in
                imageScale = scale + previousScale
            }
            .onEnded { _ in
                previousScale = imageScale - 1
            }

        Image(systemName: "person.fill")
            .resizable()
            .scaledToFill()
        .scaleEffect(imageScale)
        .offset(imageOffset)
        .gesture(dragGesture)
        .gesture(pinchGesture)
    }
}
ios swiftui crop cgimage image-cropper
1个回答
0
投票

如果这对任何人都有帮助 - 我在这里找到了答案https://copyprogramming.com/howto/swiftui-scale-zoom-and-crop-image

© www.soinside.com 2019 - 2024. All rights reserved.