HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何使用照片框架快速浏览照片库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,为我的应用程序上的每张票创建一个独特的照片库.我需要弄清楚如何遍历该库,以便我可以一次一个地将图像上传到服务器.我在youtube上关注了这些教程. ( Video)我目前正在使用Swift作为我的语言.我的最终目标是拥有类似下面的伪代码.
//I need the following for loop example
for photo in gallery
{
    uploadToServer(photo)
}

//this function works already

func uploadToServer(photo:UIImagE)
{
    callRest
    postPhoto
}

这是我的代码到目前为止无法弄清楚如何循环.他们然.

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.httpR_350_11845@ethod = "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")*/


        })
    }
}

解决方法

所以经过Matt的一些研究和指导,我已经弄明白了.这是如何做到这一点.确保在主线程上执行此操作,因此必须设置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,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!,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,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.httpR_350_11845@ethod = "POST"
    //request.SETVALue("multipart/form-data",forhttpHeaderField: "Content-Type")
    request.httpBody = imageData

    var response: NSURLResponse? = nil

    let reply = NSURLConnection.sendSynchronousrequest(request,error:&error)

    let results = NSString(data:reply!,encoding:NSUTF8StringEncoding)
    println("API Response: \(results)")
}

大佬总结

以上是大佬教程为你收集整理的ios – 如何使用照片框架快速浏览照片库全部内容,希望文章能够帮你解决ios – 如何使用照片框架快速浏览照片库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。