2017-01-19 1 views
0

다음 코드를 사용하여 CALayer를 사용하여 비디오에 이미지를 추가하고 있습니다. 그러나 내가 직면하고있는 문제는 다른 비디오 해상도를 선택할 때 워터 마크의 크기와 위치 변화입니다. 저는 사용자가 스티커를 선택하고 위치와 크기를 조정하여 비디오에 추가하는 스냅인과 같은 응용 프로그램을 만들고 있습니다.ios에서 비디오의 이미지 위치가 변경됨

아무도 말해 줄 수 있습니까? 제가 여기서 무슨 실수를하고 있습니까? 이것이 올바르게 될 수 있도록 지금해야 할 일은 무엇입니까? 미리 감사드립니다!

let aLayer = CALayer() 
    aLayer.contents = image.cgImage 

    aLayer.opacity = 1.0 
    //sorts the layer in proper order 
    let videoTrack: AVAssetTrack? = videoAsset.tracks(withMediaType: AVMediaTypeVideo)[0] 
    let videoSize: CGSize? = videoTrack?.naturalSize 
    let parentLayer = CALayer() 
    let videoLayer = CALayer() 

    let videoScale : CGFloat = CGFloat((videoSize?.width)!)/CGFloat(self.containerView.frame.width) 

    print("sticker frame \((stickerImageView?.frame.width)! * videoScale) \((stickerImageView?.frame.height)! * videoScale)") 

    aLayer.frame = CGRect(x: (stickerImageView?.frame.origin.x)! * videoScale ,y: (stickerImageView?.frame.origin.y)! * videoScale , width: (stickerImageView?.frame.width)! * videoScale , height : (stickerImageView?.frame.height)! * videoScale) 


    parentLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!)) 
    videoLayer.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat((videoSize?.width)!), height: CGFloat((videoSize?.height)!)) 
    parentLayer.addSublayer(videoLayer) 
    parentLayer.addSublayer(aLayer) 

답변

0

비디오 크기의 백분율로 이미지의 크기를 정의해야합니다. 이제 이미지 크기가 일정합니다. 따라서 이미지가 100x100이고 비디오가 300x200 인 경우 이미지는 비디오 너비의 1/3과 높이의 절반을 차지합니다. 그러나 동일한 이미지를 1080x720과 같은 더 큰 비디오에 적용하면 이미지가 비디오 너비와 높이의 약 10 %가됩니다.

계산하려는 눈금은 비디오와 해당 컨테이너 간의 관계입니다. 실제 비디오 크기를 기반으로 계산해야합니다.

+0

감사합니다!이 방법을 사용하여 x, 너비 및 높이를 얻을 수 있지만 지금은 Y 만 정확하지 않습니다. 제발 도와주세요. –

+0

@AkshaykumarMaldhure Y가 무엇이어야합니까? –

+0

UIImage 프레임 y, 사용자가 비디오에서 어떻게 유지하고 있어야합니다. 그는 항상 X 위치가 제대로 작동하는 경우 이미지 위치를 –