Ich habe gründlich gelesen, die neuesten iOS8 Fotorahmen Arbeit und ich versuche, einige Assets aus der Benutzer-Bibliothek zur Anzeige zu holen. Ich lasse den Benutzer 4 Bilder gleichzeitig bearbeiten. Aus diesem Grund muss ich die Bilder komprimieren, sonst stürzt die App ab.UIImage Größe von 'requestImageForAsset' ist nicht einmal in der Nähe der 'targetSize' Einstellung
ich PHImageManager bin mit den Bildern über den folgenden Code zu laden:
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)")
}
}
}
Wie Sie sehen können, habe ich die Zielgröße an Berechnung des Bild ist zumindest nicht größer als der Bildschirm, um sicherzustellen. Wenn ja, verkleinere ich das Verhältnis auf dem Bild. Doch hier ist ein typisches Druckprotokoll
Zielgröße (768.0,798.453531598513) Ergebnis Größe ist (1614.0,1678.0)
Auch wenn ich die Zielgröße 768x798 bin Einstellung (in diesem spezifischen Fall) die resultierende UIImage, die es mir gibt, ist mehr als das Doppelte. Jetzt gemäß der Dokumentation, der targetSize-Parameter
"Die Zielgröße des Bildes zurückgegeben werden."
Nicht die klarste Erklärung, aber aus meinen Experimenten ist es nicht mit diesem übereinstimmt.
Wenn Sie einige Vorschläge haben, würde ich es gerne hören!
Vielen Dank für diesen (resizeMode wird ignoriert). Ich habe das Bildresultat von 'requestImageForAsset' an eine andere Klasse delegiert und es hat sich deswegen schlecht benommen. – Christopher