Я внимательно прочитал последнюю версию фоторамки 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) Размер результата (1614,0 1678,0)
Несмотря на то, что я устанавливаю целевой размер 768x798 (в этом конкретном случае), результирующий UIImage, который он мне дает, более чем вдвое больше. Теперь по документации параметр targetSize
«Целевой размер возвращаемого изображения».
Не самое ясное объяснение, но из моих экспериментов оно НЕ соответствует этому.
Если у вас есть предложения, буду рад их услышать!