Преобразование UIView с чистым фоновым цветом в UIImage добавляет белый цвет фона к сгенерированному изображению - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь преобразовать вид на моей сцене в UIImage, который будет использоваться в API привязок для наклеек. Когда изображение генерируется из вида, все в порядке, кроме белого фона. Я не хочу фона.

Я попытался преобразовать изображение в JPEG и проверил, что фон на самом деле четкий.

    let renderer = UIGraphicsImageRenderer(size: contentView.bounds.size)        
    let image = renderer.image { ctx in
        contentView.drawHierarchy(in: contentView.bounds, afterScreenUpdates: true)
    }
    let imageData = image.jpegData(compressionQuality: 0.75)!




    let stickerImage = UIImage(data:imageData,scale:1.0)!
    //let stickerImage = /* Prepare a sticker image */
    let sticker = SCSDKSnapSticker(stickerImage: stickerImage)
    /* Alternatively, use a URL instead */
    // let sticker = SCSDKSnapSticker(stickerUrl: stickerImageUrl, isAnimated: false)

    /* Modeling a Snap using SCSDKNoSnapContent */
    let snap = SCSDKNoSnapContent()
    snap.sticker = sticker /* Optional */
    snap.caption = "Snap on Snapchat!" /* Optional */
    snap.attachmentUrl = "https://www.snapchat.com"
    view.isUserInteractionEnabled = false
    snapAPI.startSending(snap) { [weak self] (error: Error?) in
        self?.view.isUserInteractionEnabled = true

        // Handle response
    }

Компилируется и запускается, просто имеет белый фон для UIView, где должно быть ясно

1 Ответ

0 голосов
/ 07 июня 2019

Я не знаком с SCSDK, но это расширение, которое я использую для превращения UIViews в изображения, и оно отлично работает для прозрачного фона.Предполагая, что вы не настроены на использование этой библиотеки, вы можете попробовать этот метод.

extension UIImage {

    /// Creates a UIImage 'snapshot' of a UIView.
    convenience init(from view: UIView) {
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
        view.drawHierarchy(in: view.bounds, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        self.init(cgImage: (image?.cgImage)!)
    }

}

Вызов с:

let image = UIImage(from: myView)

Дайте мне знать, если это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...