PHAssetManager игнорирует targetSize при запросе изображения? - PullRequest
0 голосов
/ 11 июня 2018

У меня есть список PHAssets, из которого мне нужно получить изображения определенного размера.

Чтобы проверить это, я даю размер, равный размеру экрана устройства

        let manager = PHImageManager.default()
        let option = PHImageRequestOptions()
        option.isSynchronous = true

        for asset in assets {
            manager.requestImage(for: asset, targetSize: CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in

                //prints the proper bounds for a screen
                print("width and height \(UIScreen.main.bounds.width) \(UIScreen.main.bounds.height)")

                //prints 2304.0 3072.0 for width and height respectively
                print("result size \(result!.size.width) \(result!.size.height)\n")

                self.photos.append(result!)
            })
        }

Мне нужно, чтобы результирующие фотографии были обрезаны до указанного размера, но они не более чем на 2000 пикселей.Как мне решить эту проблему?

1 Ответ

0 голосов
/ 12 июня 2018
option.resizeMode = .exact

Для Apple:

Чтобы удовлетворить ваш запрос, фотографии могут предоставлять изображение, которое немного больше целевого размера - либо потому, что такое изображениеуже кэширован или потому, что он может быть сгенерирован более эффективно.

Поскольку требуется определенный размер, установите вышеуказанный параметр, чтобы запрос соответствовал вашему размеру.

Параметр

case exact

Фотографии изменяют размер изображения, чтобы точно соответствовать целевому размеру.

...