How to loop through a photo gallery in swift with photos framework

后端 未结 2 1262
鱼传尺愫
鱼传尺愫 2020-12-29 14:09

I have an app that creates a unique photo gallery for each ticket on my app. I need to figure out how to loop through that gallery so I can upload the images to the server o

相关标签:
2条回答
  • 2020-12-29 14:44

    So after some research and guidance from Matt I have figured it out. Here is how to do this. Make sure you execute this on the main thread as well so you have to set the options.synchronous = true. If not for some reason it does not have any value for the photos.

    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)")
    }
    
    0 讨论(0)
  • 2020-12-29 14:50
    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)
               }
           }
       }
    
    0 讨论(0)
提交回复
热议问题