使用iPad拍照时左图像向左旋转

时间:2013-05-10 09:42:10

标签: objective-c ipad core-graphics cgcontext cgimage

在我正在工作的应用程序中,您可以使用iPad相机拍照。之后使用CoreGraphics,您可以在该图像上绘制形状 起初,图像是颠倒的并且是镜像的。我解决了这个问题:

CGContextTranslateCTM(myContext, 0, backgroundImage.size.height);
CGContextScaleCTM(myContext, 1.0, -1.0);

但是现在当您以纵向模式拍摄图像时,导入的图像会向左旋转(因此它会水平显示)。我用这段代码将图像旋转回来了:

UIImage *tempImage = [[UIImage alloc] initWithCGImage:imagetest.CGImage];

CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, 0, tempImage.size.height);
transform = CGAffineTransformRotate(transform, -M_PI_2);
CGContextRef ctx = CGBitmapContextCreate(NULL, tempImage.size.width, tempImage.size.height,
                                         CGImageGetBitsPerComponent(tempImage.CGImage), 0,
                                         CGImageGetColorSpace(tempImage.CGImage),
                                         CGImageGetBitmapInfo(tempImage.CGImage));
CGContextConcatCTM(ctx, transform);
CGContextDrawImage(ctx, CGRectMake(0,0,tempImage.size.height,tempImage.size.width), tempImage.CGImage);
CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
UIImage *img = [UIImage imageWithCGImage:cgimg];
CGContextRelease(ctx);
CGImageRelease(cgimg);

现在图像以正确的方式显示(纵向),但我无法在其上正确绘制,可能是因为宽度和高度相反。

根据我的阅读,有一个带有图像方向的元标记,CoreGraphics无法读取。

您知道旋转图像的更好方法吗?或者在纵向模式下拍摄照片时会阻止图像旋转的任何解决方案?

2 个答案:

答案 0 :(得分:0)

是的,这是一个问题,因为设备相机的默认方向是横向,如果您以纵向模式拍照并在照片库中查看预览它会没问题,但是当您在应用程序中使用它时,它将旋转90度,为了解决这个问题,我在Recent Post Here

中写了答案

答案 1 :(得分:0)

如果你tell the image to draw itself,它会尊重自己的方向。无需翻转它(它本身就是这样)而不需要旋转它。