0

在我正在使用的应用程序中,您可以使用 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 无法读取带有图像方向的元标记。

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

4

2 回答 2

0

是的,这是一个问题,因为设备相机的默认方向是横向,如果您以纵向模式拍照并在照片库中查看预览,它会很好,但是当您在应用程序中使用它时,它将旋转 90 度,以解决该问题问题我已经在我最近的帖子中写了答案

于 2013-05-10T10:13:09.857 回答
0

如果您告诉图像自己绘制,它将尊重自己的方向。无需翻转它(它自己会这样做),也无需旋转它。

于 2013-05-10T21:35:18.023 回答