我正试图通过cropping(to:)
CGImage
方法使用iPhone相机拍摄的部分图像,但我遇到了一个奇怪的现象,我UIImage
的尺寸是转换为.cgImage
时加倍,这显然阻止我做我想做的事。
流程是:
.image
现在设置为“屏幕截图”let croppedImage = imageContainerView.renderToImage()
imageContainerView.image = croppedImage
print(imageContainerView.image!.size) //yields (320.0, 568.0)
print(imageContainerView.image!.cgImage!.width, imageContainerView.image!.cgImage!.height) //yields (640, 1136) ??
extension UIView {
func renderToImage(afterScreenUpdates: Bool = false) -> UIImage {
let rendererFormat = UIGraphicsImageRendererFormat.default()
rendererFormat.opaque = isOpaque
let renderer = UIGraphicsImageRenderer(size: bounds.size, format: rendererFormat)
let snapshotImage = renderer.image { _ in
drawHierarchy(in: bounds, afterScreenUpdates: afterScreenUpdates)
}
return snapshotImage
}
}
到目前为止,我一直在这里闲逛但没有成功,我很乐意欣赏关于图像尺寸突然加倍的指针或建议。
提前致谢。
答案 0 :(得分:2)
这是因为print(imageContainerView.image!.size)
以点为单位打印图像对象的大小,print(imageContainerView.image!.cgImage!.width, imageContainerView.image!.cgImage!.height)
以像素为单位打印实际图像的大小。
在iPhone上你正在使用水平和垂直两个像素的外翻点。 UIImage scale属性将为您提供在您的情况下为2的因子。
请参阅此链接iPhone Resolutions