ios - 使用 SWIFT 在 iOS 中缩放图像时出现内存泄漏

标签 ios swift image-processing memory-management memory-leaks

我有一个应用程序可以显示图像并将其缩放到特定尺寸。 这是缩放代码:

static func scaledImage(originalImage image: UIImage, scaledToSize size: CGSize) -> UIImage {        
    UIGraphicsBeginImageContextWithOptions(size, true, 0.0)
    image.drawInRect(CGRectMake(0, 0, size.width, size.height))
    let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    return scaledImage
}

以下是调用该函数的方式:

for i in 0 ..< images.count{
    if let data = images[i].imageData, let originalImage = UIImage(data: data) {
        previewImage = scaledImage(originalImage: originalImage, scaledToSize: desiredSize)            
    } 
} 

应用程序因 50 张图像而崩溃 当我使用仪器查找内存分配位置时,它告诉我这一行分配了 960 MB: image.drawInRect(CGRectMake(0, 0, size.width, size.height))

这是相当大的内存。

所以我的问题是这里做错了什么? 如何解决内存泄漏。

我搜索了很多有关如何缩放图像的示例,但它们或多或少是相同的。没有关于内存管理的示例,并且由于我在图像处理方面没有很多经验,所以我不知道如何解决这个问题。

这里的任何帮助将不胜感激。 提前致谢

最佳答案

您必须自动释放对scaledImage的调用。

autoreleasepool {
  previewImage = scaledImage(originalImage: originalImage, scaledToSize: desiredSize)
}

关于ios - 使用 SWIFT 在 iOS 中缩放图像时出现内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36843994/

相关文章:

ios - 应用内购买 - 如何确定是否已经购买?

ios - 无法将 Sprite 添加到场景中

ios - 在键盘上方添加 UISearchBar

ios - 在 pod install 之后,使用更新的 fork pod 在本地没有相同的代码

swift - 如何在 Swift 的便利初始化器中调用类方法

opencv - Haar 对象检测专利问题

algorithm - 如何使用 Haar 小波检测图像上的线条?

ios - 无法在 Swift 中对 UITableView 调用 "registerClass"

swift - 为什么 string.contains ("text") 不适用于 swift 5 中的字符串?

Python:如果我知道原始像素的位置,如何找到所有连接的像素?