【发布时间】:2016-10-17 03:42:39
【问题描述】:
我正在寻找一种解决方案,将作为图像保存的 UIView(及其子视图)保存到设备照片库中。我希望输出图像的大小为 1024 x 1024。 UIView 将始终是正方形,因此子视图将适合正方形。结果保存的输出必须满足这些需求。
这是我所拥有的:
let outputSize = CGSize(width: 1024.0, height: 1024.0)
func imageWithView(view: UIView) -> UIImage {
UIGraphicsBeginImageContextWithOptions(outputSize, view.opaque, 0.0)
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: false)
let outputImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return outputImage
}
我传递给上面参数的视图是方形视图。下面的截图是结果:
在我的故事板中,UIView 是 280x280 的正方形(如果这有区别的话)。我想要的结果是 UIView(和其中的照片)被保存为黑色框架的完整尺寸(即 1024 平方)。感谢您的帮助。
编辑
这是一个更新版本: 虽然可以满足输出 1024 平方视图的需求,但质量不是很理想。想使用这里讨论的 CGBitmapContextCreate & CGContextDrawImage 方法:http://nshipster.com/image-resizing/
func stackOverflow() -> UIImage{
let hasAlpha = false
let scale: CGFloat = 1.0
UIGraphicsBeginImageContextWithOptions(CGSizeMake(1024.0, 1024.0), !hasAlpha, scale)
mainView.drawViewHierarchyInRect(CGRect(origin: CGPointZero, size: CGSizeMake(1024.0, 1024.0)), afterScreenUpdates: false)
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return scaledImage
}
【问题讨论】: