Sticker emoji suggestion

This commit is contained in:
Ilya Laktyushin
2024-03-31 16:24:25 +04:00
parent 977ecf458e
commit 7301013744
5 changed files with 1152 additions and 19 deletions

View File

@@ -196,6 +196,8 @@ public final class MediaEditor {
public var canCutoutUpdated: (Bool) -> Void = { _ in }
public var isCutoutUpdated: (Bool) -> Void = { _ in }
public var classificationUpdated: ([(String, Float)]) -> Void = { _ in }
private var textureCache: CVMetalTextureCache!
public var hasPortraitMask: Bool {
@@ -697,18 +699,22 @@ public final class MediaEditor {
textureSource.setMainInput(.image(image))
}
if case .sticker = self.mode, let cgImage = image.cgImage, !imageHasTransparency(cgImage) {
let _ = (cutoutStickerImage(from: image, onlyCheck: true)
|> deliverOnMainQueue).start(next: { [weak self] result in
guard let self, result != nil else {
return
}
self.canCutout = true
self.canCutoutUpdated(true)
if case .sticker = self.mode, let cgImage = image.cgImage {
if !imageHasTransparency(cgImage) {
let _ = (cutoutStickerImage(from: image, onlyCheck: true)
|> deliverOnMainQueue).start(next: { [weak self] result in
guard let self, result != nil else {
return
}
self.canCutout = true
self.canCutoutUpdated(true)
})
}
let _ = (classifyImage(image)
|> deliverOnMainQueue).start(next: { [weak self] classes in
self?.classificationUpdated(classes)
})
}
}
if let player, let playerItem = player.currentItem, !textureSourceResult.playerIsReference {
textureSource.setMainInput(.video(playerItem))