在 swift 中裁剪屏幕截图
Cropping a screenshot in swift
我正在尝试截取屏幕截图并从该屏幕截图中裁剪出一部分。
截屏部分完美,但我无法使裁剪部分正常工作。
var image = self.view?.pb_takeSnapshot()
let croprect = CGRectMake(view.bounds.width/2, view.bounds.height/3.8,
view.bounds.width/2, view.bounds.height/3.5)
var imageRef = CGImageCreateWithImageInRect(CGImage(image), croprect) //Error: CGImage cannot be constructed because it has no accessible initializers
var croppedImage = UIImage(CGImage: imageRef)
截图功能:
func pb_takeSnapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.mainScreen().scale);
self.drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
// old style: self.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
我的问题:有没有不使用 CGImage 的方法,或者有没有简单的方法将 UIImage 转换为 CGImage?
UIImage
在大多数情况下包含您可以直接访问的 CGImage
。
在您的情况下,image
是使用可选链接设置的,类型为 UIImage?
,因此您需要:
UIImage?.CGImage
访问 CGImage
我正在尝试截取屏幕截图并从该屏幕截图中裁剪出一部分。 截屏部分完美,但我无法使裁剪部分正常工作。
var image = self.view?.pb_takeSnapshot()
let croprect = CGRectMake(view.bounds.width/2, view.bounds.height/3.8,
view.bounds.width/2, view.bounds.height/3.5)
var imageRef = CGImageCreateWithImageInRect(CGImage(image), croprect) //Error: CGImage cannot be constructed because it has no accessible initializers
var croppedImage = UIImage(CGImage: imageRef)
截图功能:
func pb_takeSnapshot() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, UIScreen.mainScreen().scale);
self.drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true)
// old style: self.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
我的问题:有没有不使用 CGImage 的方法,或者有没有简单的方法将 UIImage 转换为 CGImage?
UIImage
在大多数情况下包含您可以直接访问的 CGImage
。
在您的情况下,image
是使用可选链接设置的,类型为 UIImage?
,因此您需要:
UIImage?.CGImage
访问 CGImage