在我正在使用的应用程序中,您可以使用 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 无法读取带有图像方向的元标记。
您知道旋转图像的更好方法吗?或者在以纵向模式拍摄照片时可以防止图像旋转的任何解决方案?