作物形象与欲望Rect
问题描述:
许多问题都可以在SO上,但不幸的是我无法解决我的问题,使用它们。 我在我的相机上添加了覆盖视图,现在想要在蓝色边框内(仅水瓶)获取图像。作物形象与欲望Rect
我试图代码块像下面
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
,但有两个问题
- 无论是裁剪图像变得过于庞大
- 取向的变化为-90。
对于第1点,我想我提供的cropRect
太小,这就是为什么它显示图像的一小部分太放大视图。在我的其他viewController
我有UIImageView
(其中裁剪图像需要显示)与蓝色边框内的相机矩形大小相同。 所以问题是如何裁剪图像,我应该提供什么值cropRect
?
答
假设图像尺寸1280 * 1080和您的作物视图的尺寸为320 * 480,您需要做以下
-
转换你的作物视图的帧图像尺寸矩形(0,0 ,1280,1080)通过找到所述比例因子通过比例因子
float xScale = 1280/320; float yScale = 1080/480; float scaleFactor = (xScale < yScale) ? xScale : yScale;
-
乘法cropView帧。这会将屏幕坐标映射到图像大小坐标。然后使用新的cropRect与
CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
不同方向的问题是,CoreGraphics中使用不同的坐标系作为比较,查看的坐标系。 Quartz 2D Coordinate Systems所以尝试设置
[UIImage imageWithCGImage:imageRef].imageOrientation = largeImage.imageOrientation
我需要在'cropRect'中提供什么值? – Ans
假设图像大小为1280 * 1080并且裁切为{40,50,320,480}。通过{40 * scaleFactor,50 * scaleFactor,320 * scaleFactor,480 * scaleFactor}来转换croprect,并使用这个新矩形为'imageOrientation'剪辑 –
它说'赋值为只读属性。' – Ans