我会快速而直截了当。
我使用这种方法来计算UIImage'记忆大小。
extension UIImage {
func memorySize() -> size_t {
let image = self.cgImage!
let size = image.height * image.bytesPerRow
return size
}
}
我正在裁剪UIImage
。 之前裁剪图像(使用原始图像的含义)。
这是图片统计信息:Width
- > 2668 | Height
- > 2000年| scale
- > 1 | memorySize
- > 21376000
后使用
裁剪原始图片 func passCroppedImage(_ myFrame : CGRect) -> UIImage {
let imageRef:CGImage = preview.image!.cgImage!.cropping(to: rect)!
let croppedImage:UIImage = UIImage(cgImage: imageRef)
return croppedImage
}
我的裁剪图片统计信息为:Width
- > 1126 | Height
- > 2000年| scale
- > 1 | memorySize
- > 21376000
如何裁剪图像宽度/高度尺寸不同,但内存大小保持不变?
根据苹果文档,我做过一项关于image.cgImage!.cropping(to: rect) -> CGImage
The resulting image retains a reference to the original image,
which means you may release the original image after calling this function.
但是,如果我试图发布CGImage,它会说Swift
处理内存管理。我很困惑。 非常感谢任何帮助!