Spi*_*y75 8 image-uploading ios swift photosframework
我有一个应用程序,为我的应用程序上的每张票创建一个独特的照片库.我需要弄清楚如何遍历该库,以便我可以一次一个地将图像上传到服务器.我在youtube上关注了这些教程.(视频)我目前正在使用Swift作为我的语言.我的最终目标是拥有类似下面的伪代码.
//I need the following for loop example
for photo in gallery
{
uploadToServer(photo)
}
//this function works already
func uploadToServer(photo:UIImage)
{
callRest
postPhoto
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码到目前为止无法弄清楚如何循环.他们虽然.
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", self.albumName)?
let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.assetCollection = collection.firstObject as PHAssetCollection
self.albumFound = true
}
else { albumFound = false }
var i = collection.count
self.photoAssets = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
self.photoAssets.enumerateObjectsUsingBlock{(object: AnyObject!,
count: Int,
stop: UnsafeMutablePointer<ObjCBool>) in
if object is PHAsset{
let asset = object as PHAsset
println("Inside If object is PHAsset, This is number 1")
let imageSize = CGSize(width: asset.pixelWidth,
height: asset.pixelHeight)
/* For faster performance, and maybe degraded image */
let options = PHImageRequestOptions()
options.deliveryMode = .FastFormat
imageManager.requestImageForAsset(asset,
targetSize: imageSize,
contentMode: .AspectFill,
options: options,
resultHandler: {
(image, info)->Void in
self.photo = image
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var server = defaults.objectForKey("imageServer") as String!
var error: NSError? = nil
var imageData = UIImageJPEGRepresentation(self.photo, 90)
var url = NSURL(string: server)
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
//request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
request.HTTPBody = imageData
var response: NSURLResponse? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
/*
/* The image is now available to us */
self.sendPhotos(image)
println("enum for image, This is number 2")*/
})
}
}
Run Code Online (Sandbox Code Playgroud)
所以经过马特的一些研究和指导,我已经弄明白了.这是怎么做的.确保在主线程上执行此操作,因此必须设置options.synchronous = true.如果由于某种原因它没有任何照片的价值.
func getSyncPhotos()
{
self.albumName = String(self.ticket_id!)
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", self.albumName)?
let collection:PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.assetCollection = collection.firstObject as PHAssetCollection
self.albumFound = true
}
else { albumFound = false }
var i = collection.count
self.photoAssets = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
let imageManager = PHCachingImageManager()
self.photoAssets.enumerateObjectsUsingBlock{(object: AnyObject!,
count: Int,
stop: UnsafeMutablePointer<ObjCBool>) in
if object is PHAsset{
let asset = object as PHAsset
println("Inside If object is PHAsset, This is number 1")
let imageSize = CGSize(width: asset.pixelWidth,
height: asset.pixelHeight)
/* For faster performance, and maybe degraded image */
let options = PHImageRequestOptions()
options.deliveryMode = .FastFormat
options.synchronous = true
imageManager.requestImageForAsset(asset,
targetSize: imageSize,
contentMode: .AspectFill,
options: options,
resultHandler: {
image, info in
self.photo = image!
/* The image is now available to us */
self.sendPhotos(self.photo)
println("enum for image, This is number 2")
})
}
}
}
func sendPhotos(uploadImage:UIImage)
{
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var server = defaults.objectForKey("imageServer") as String!
var error: NSError? = nil
var imageData = UIImageJPEGRepresentation(uploadImage, 90)
var url = NSURL(string: server)
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
//request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type")
request.HTTPBody = imageData
var response: NSURLResponse? = nil
let reply = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&error)
let results = NSString(data:reply!, encoding:NSUTF8StringEncoding)
println("API Response: \(results)")
}
Run Code Online (Sandbox Code Playgroud)
func fetchVideoFromLibrary() {
let fetchOptions: PHFetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let fetchResult = PHAsset.fetchAssetsWithMediaType(.Video, options: fetchOptions)
fetchResult.enumerateObjectsUsingBlock { (object, index, stop) -> Void in
let options = PHImageRequestOptions()
options.synchronous = true
options.deliveryMode = .HighQualityFormat
PHImageManager.defaultManager().requestAVAssetForVideo(object as! PHAsset, options: .None) { (avAsset, avAudioMix, dict) -> Void in
print(avAsset)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13929 次 |
| 最近记录: |