Обрезка изображения, которое было взято из видео канала

У меня есть CGPoint значения позиции, которую я хочу, чтобы изображение было обрезано на дисплее iPhone. Однако текущий код отображает положение относительно пикселей видеопотока, а не относительно дисплея iPhone, с которого я первоначально получил координаты.

Как я могу решить это?

func imsamplebuff (buffer:CMSampleBuffer) -> UIImage? {

    if let imageBuffer = CMSampleBufferGetImageBuffer(buffer) {

        CVPixelBufferLockBaseAddress(imageBuffer,CVPixelBufferLockFlags(rawValue: 0))

        let baseAddress = CVPixelBufferGetBaseAddress(imageBuffer)

        let bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer)

        let width = CVPixelBufferGetWidth(imageBuffer)

        let height = CVPixelBufferGetHeight(imageBuffer)

        let colorSpace = CGColorSpaceCreateDeviceRGB()

        let context = CGContext(data: baseAddress,width: width,height: height,bitsPerComponent: 8,bytesPerRow: bytesPerRow, space: colorSpace, bitmapInfo: CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue)

        let im = context!.makeImage()
        CVPixelBufferUnlockBaseAddress(imageBuffer,CVPixelBufferLockFlags(rawValue: 0))

        if let im = im {

            let image = (UIImage(cgImage: im)).crop(rect: CGRect(x: p.x   , y: p.y  , width: 50.0 , height: 100.0))

            return image
        }
    }

    return nil
}

0 ответов

Другие вопросы по тегам