很多问题都可以在SO上找到,但遗憾的是我无法解决使用它们的问题。 我在相机上添加了叠加视图,现在想要在蓝色边框(只有水瓶)内获取图像。
我尝试了代码块,如下面的
CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);
但有两个问题
对于第1点,我认为我提供的cropRect
太小了,这就是为什么它显示非常小的部分图像时视图太小。在我的另一个viewController
我有UIImageView
(需要显示裁剪的图像)与蓝色边框内的相机rect相同的大小。
所以问题是如何裁剪图像以及我应该为cropRect
提供什么值?
答案 0 :(得分:0)
假设图像尺寸为1280 * 1080且裁剪视图尺寸为320 * 480,则需要执行以下操作
通过查找比例因子将裁剪视图的帧转换为图像大小rect(0,0,1280,1080)
float xScale = 1280 / 320;
float yScale = 1080 / 480;
float scaleFactor = (xScale < yScale) ? xScale : yScale;
按比例因子乘以cropView框架。这会将屏幕坐标映射到图像大小坐标。然后使用带有
的新cropRectCGImageCreateWithImageInRect([largeImage CGImage], cropRect);
不同方向的问题是,与视图的坐标系相比,CoreGraphics使用不同的坐标系。 Quartz 2D Coordinate Systems请尝试设置
[UIImage imageWithCGImage:imageRef].imageOrientation = largeImage.imageOrientation