我已經仔細閱讀了最新的iOS8相框工作,並試圖從用戶庫中獲取一些資產以顯示。我讓用戶一次編輯4個圖像。但正因爲如此,我需要壓縮圖像,否則應用程序將崩潰。從'requestImageForAsset'返回的UIImage大小甚至沒有接近'targetSize'設置
我使用的是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超過了兩倍。根據文檔,目標大小參數
「要返回的圖像的目標大小。」
不是最清楚的解釋,但從我的實驗它不符合這一點。
如果您有一些建議,我很樂意聽到它!
感謝這個傳遞。我正在將'requestImageForAsset'的圖像結果委託給另一個類,由於這個原因,這是行爲不端。 – Christopher 2015-12-15 02:29:02