Я подробно прочитал последнюю работу фоторамки iOS8, и я пытаюсь извлечь некоторые ресурсы из библиотеки пользователей для отображения. Я разрешаю пользователю редактировать 4 изображения одновременно. Но из-за этого мне нужно сжать изображения, иначе приложение выйдет из строя.
Я использую PHImageManager для загрузки изображений с помощью следующего кода:
func processImages()
{
println("Processing")
_selectediImages = Array()
_cacheImageComplete = 0
for asset in _selectedAssets
{
var options:PHImageRequestOptions = PHImageRequestOptions()
options.version = PHImageRequestOptionsVersion.Unadjusted
options.synchronous = true
var minRatio:CGFloat = 1
if(CGFloat(asset.pixelWidth) > UIScreen.mainScreen().bounds.width || CGFloat(asset.pixelHeight) > UIScreen.mainScreen().bounds.height)
{
minRatio = min(UIScreen.mainScreen().bounds.width/(CGFloat(asset.pixelWidth)), (UIScreen.mainScreen().bounds.height/CGFloat(asset.pixelHeight)))
}
var size:CGSize = CGSizeMake((CGFloat(asset.pixelWidth)*minRatio),(CGFloat(asset.pixelHeight)*minRatio))
println("Target size is \(size)")
PHImageManager.defaultManager().requestImageForAsset(asset, targetSize:size, contentMode: .AspectFill, options: options)
{
uiimageResult, info in
var image = iImage(uiimage: uiimageResult)
println("Result Size Is \(uiimageResult.size)")
}
}
}
Как вы можете видеть, я вычисляю целевой размер, чтобы убедиться, что изображение по крайней мере не больше экрана. Если это так, я уменьшаю масштаб изображения на изображении. Однако здесь типичный журнал печати
Размер цели (768,0 798,453531598513) Результат Размер Is (1614.0,1678.0)
Несмотря на то, что я устанавливаю целевой размер 768x798 (в этом конкретном случае), полученный UIImage, который он мне дает, более чем вдвое больше. Теперь, согласно документации, параметр targetSize
"Размер целевого изображения для возврата".
Не самое ясное объяснение, но из моих экспериментов оно НЕ соответствует этому.
Если у вас есть предложения, я бы хотел его услышать!