iphone - net - noticias apple
Girar CGImage tomada del cuadro de video (3)
Solo gira el contexto
Simplemente rota el contexto en radianes. Esta convocatoria giraría el contexto 90 grados.
CGFloat degrees = 90.f;
CGFloat radians = degrees * (M_PI / 180.f);
CGContextRotateCTM(context, radians);
Puede configurar fácilmente este método para tomar la orientación deseada y rotar en consecuencia.
Este es el código de Apple (de Preguntas y respuestas técnicas QA1702) para obtener un UIImage de un búfer de video. Desafortunadamente, la imagen devuelta se rota 90 grados. ¿Cómo edito esto para que la imagen devuelta esté correctamente orientada?
- (UIImage *) imageFromSampleBuffer:(CMSampleBufferRef) sampleBuffer
{
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(imageBuffer, 0);
void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);
size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
size_t width = CVPixelBufferGetWidth(imageBuffer);
size_t height = CVPixelBufferGetHeight(imageBuffer);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8,
bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
CGImageRef quartzImage = CGBitmapContextCreateImage(context);
CVPixelBufferUnlockBaseAddress(imageBuffer,0);
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIImage *image = [UIImage imageWithCGImage:quartzImage];
CGImageRelease(quartzImage);
return (image);
}
Depende de si está utilizando la cámara frontal o la cámara trasera
int frontCameraImageOrientation = UIImageOrientationLeftMirrored;
int backCameraImageOrientation = UIImageOrientationRight;
UIImage *image = [[UIImage alloc] initWithCGImage:newImage scale:(CGFloat)1.0 orientation:frontCameraImageOrientation];
Puedes cambiar la orientación de video, de esta manera obtienes una imagen correcta
connection.videoOrientation = AVCaptureVideoOrientationPortrait
Porque por defecto la orientación del video no es retrato.