Avatar
実際に私が制作しているアプリの中で実装している機能の一つで、 アルバムから画像を取得 ↓ UIScrollView上でResize ↓ UIScrollViewと同じ位置に配置した透明のUIViewから新たにUIImageを生成 ↓ UIImageをサーバー側に送信 という流れで実装していたのですが、
6:22 AM
UIScrollView上でResizeまではメモリも20MB程度で抑えられていたのですが、変換した際に40MBまで上昇し、サーバーに送信してもなおメモリは40MBにとどまってます
6:23 AM
ちなみにアルバムから画像を取得したりPostする際に使用したViewControllerは解放できてます。
6:30 AM
class ViewController: UIViewController { var hogehoge: UIView = UIView() func piyopiyo() { NotificationCenter.default.post(.hoge, object: hogehoge.snapshotImage()) self.dismiss(animated: true, completion: nil) } } extension UIView { func snapshotImage() -> UIImage? { UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0) guard let currentContext = UIGraphicsGetCurrentContext() else { UIGraphicsEndImageContext() return nil } layer.renderInContext(currentContext) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
6:30 AM
大まかに実装の流れを書いてみました