Обрезка изображения, которое было взято из видео канала
У меня есть 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
}