以完整大小保存UIImage,包括来自UIImageView的转换

时间:2017-06-01 10:10:07

标签: ios swift core-graphics

我有一张全尺寸为1800 x 2400像素的图像。它以450 x 600的UIImageView显示。

我已将UIPinchGestureRecognizerUIRotationGestureRecognizer附加到UIImageView,允许用户缩放和旋转效果很好的图像。

我现在需要使用旋转和变换以原始大小(1800 x 2400)导出图像,我正在努力使其工作。

到目前为止我的代码:

    if let imageView = imageView, let image = imageView.image {

            UIGraphicsBeginImageContext(image.size)
            let context = UIGraphicsGetCurrentContext();

            context?.translateBy(x: 0, y: image.size.height)
            context?.scaleBy(x: 1.0, y: -1.0)
            context?.rotate(by: -imageView.transform.b)
            context?.draw(image.cgImage!, in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))

            translatedImage = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext();

        }

如上所述,旋转是正确的,但是图像被拉出中心,我无法弄清楚如何包含缩放。

图形是我开发中的弱点,我已经在这里工作了几个小时而没有成功。

1 个答案:

答案 0 :(得分:0)

永远不要缩放图像本身,因为它耗费时间并且不是推荐的方式。

使用 scrollView 进行缩放,您不必考虑图像大小。将大尺寸图像放在xcassets中。 ScrollView具有用于缩放的委托功能。它也有一些漂亮的属性。

scrollView.minimumZoomScale = 0.5;
scrollView.maximumZoomScale = 6.0;

所以最好把你的努力转移到 UIScrollView ,你会发现你不必为此编写这么多代码。