Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
shima11 committed Feb 23, 2024
1 parent 58f2718 commit 1cc9a04
Showing 1 changed file with 42 additions and 15 deletions.
57 changes: 42 additions & 15 deletions Demo/Demo/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,54 @@ import PhotosUI
@available(iOS 16.0, *)
struct ContentView: View {

@State private var selectedPhotoItem: PhotosPickerItem? = nil
@State var originalImage: Image? = nil
@State var selectedPhotoItem: PhotosPickerItem? = nil
@State var originalImage: UIImage? = nil
@State var inputAmount: Double = 0.5
@State var inputSharpness: Double = 0.3
@State var inputRadius: Double = 8.0
@State var edittedImage: Image? = nil

var body: some View {
NavigationView {
ScrollView {
VStack {

if let originalImage {
originalImage
if let originalImage = originalImage {
Image(uiImage: originalImage)
.resizable()
.scaledToFit()
}

if let edittedImage {
if let edittedImage = edittedImage {
edittedImage
.resizable()
.scaledToFit()
}

VStack {
Text("amount: \(inputAmount)")
Slider(value: $inputAmount, in: 0...1, step: 0.1)
Text("sharpness: \(inputSharpness)")
Slider(value: $inputSharpness, in: 0...1, step: 0.1)
Text("radius: \(inputRadius)")
Slider(value: $inputRadius, in: 0...40, step: 1)
}
.padding(.top, 24)
.padding(.horizontal, 24)

}
.onChange(of: originalImage, perform: { _ in
perform()
})
.onChange(of: [inputAmount, inputSharpness, inputRadius], perform: { _ in
perform()
})
.onChange(of: selectedPhotoItem) { selectedPhotoItem in
Task {
do {
if let data = try await selectedPhotoItem?.loadTransferable(type: Data.self) {
if let uiImage = UIImage(data: data) {
originalImage = .init(uiImage: uiImage)

let ciImage = CIImage(image: uiImage)!

let filter = SkinSmoothingFilter()
filter.inputImage = ciImage

if let result = filter.outputImage?.toUIImage() {
edittedImage = .init(uiImage: result)
}
originalImage = uiImage
}
}
} catch {
Expand All @@ -62,6 +73,22 @@ struct ContentView: View {
}
}
}

private func perform() {
guard let uiImage = originalImage else { return }
let ciImage = CIImage(image: uiImage)!

let filter = SkinSmoothingFilter()
filter.inputImage = ciImage
filter.inputAmount = inputAmount
filter.inputSharpness = inputSharpness
filter.inputRadius = inputRadius

if let result = filter.outputImage?.toUIImage() {
edittedImage = .init(uiImage: result)
}
}

}

extension CIImage {
Expand Down

0 comments on commit 1cc9a04

Please sign in to comment.