【问题标题】:Image rotating left when taking picture with iPad使用 iPad 拍照时图像向左旋转
【发布时间】:2013-05-10 09:42:10
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 纵向拍照时,导入的图片向左旋转”——问题
    【解决方案2】:

    如果你tell the image to draw itself,它会尊重自己的方向。不需要翻转它(它自己做)也不需要旋转它。

    【讨论】:

      猜你喜欢
      • 2013-10-03
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 2013-03-26
      • 1970-01-01
      相关资源
      最近更新 更多