Создать изображение кадра из одного изображения - PullRequest
0 голосов
/ 11 сентября 2018

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

func createFrameFromImage(image:UIImage , size :CGSize) -> UIImage
    {
 let imageSize = CGSize.init(width: size.width , height: size.height)
        UIGraphicsBeginImageContext(imageSize)
        let width = imageSize.width
        let height = imageSize.height
        var letTop = image
        let rightTop = rotateImageByAngles(image: &letTop, angles: .pi/2) // correct
        let rightBottom = rotateImageByAngles(image: &letTop, angles: -.pi) // correct
        let leftBottom = rotateImageByAngles(image: &letTop, angles: -.pi/2) // correct
        letTop.draw(in: CGRect(x: 0, y: 0, width: width/2, height: height/2))
        rightTop.draw(in: CGRect(x: (width/2) , y: 0, width: width/2, height: height/2))
        leftBottom.draw(in: CGRect(x: 0, y: height/2, width: width/2, height: height/2))
        rightBottom.draw(in: CGRect(x: (width/2) , y: (height/2), width: width/2, height: height/2))
        guard let finalImage = UIGraphicsGetImageFromCurrentImageContext() else { return rightTop }
        UIGraphicsEndImageContext()
        return finalImage
    }

. Вышеупомянутая функция берет один фрагмент изображения и создает четыре разных изображения, поворачивая одно изображение под определенным углом и объединяя их, чтобы создать изображение кадра.Проблема, с которой я сталкиваюсь, заключается в поддержании пропорции изображения.Например: если создать окончательное изображение размером 320 * 120, оно сжимает изображение по горизонтали. Снимок экрана с выводом.Я хочу показать это новое сгенерированное изображение на стене, используя ARkit.

Окончательное изображение кадра

Final frame image

Данные изображения

Given Image

 // Adding Frame
    // 1 inch = 72 points
    //converting size inch to points to create frame image
    let frameWidth = (size.width + 1)
    let frameHeight = (size.height + 1)
    let imgFrameUnit = UIImage(named: "img.png")!
    let imgFrame = Singleton.shared.createFrameFromImage(image: imgFrameUnit, size: CGSize(width: frameWidth , height: frameHeight))

    let frame = SCNNode(geometry: SCNPlane(width: ((frameWidth * 2.54) / 100), height: ((frameHeight * 2.54) / 100))) // in meters
    frame.geometry?.firstMaterial?.diffuse.contents = imgFrame
    frame.name = "frame"
    nodeWeCanChange?.addChildNode(frame)                                 

Любая помощь будет по достоинству оценена?

...