首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自ALAsset的快速图像

来自ALAsset的快速图像
EN

Stack Overflow用户
提问于 2014-07-26 10:37:11
回答 2查看 5K关注 0票数 4

我有ALAssetsLibrary从相机里返回的图像。现在,我想在UIImageView中显示它。我尝试了这段代码,但它显示了一些错误:

代码语言:javascript
运行
复制
var assets : ALAsset = photoArray.objectAtIndex(indexPath.row) as ALAsset

cell.cameraOutlet.image = UIImage(CGImage: assets.thumbnail()) as UIImage // Showing error - Missing argument for parameter 'inBundle' in call 

在那之后,我尝试了下面的代码:

代码语言:javascript
运行
复制
var assets : ALAsset = (photoArray.objectAtIndex(indexPath.row) as ALAsset)
 var imageRef : CGImageRef = assets.thumbnail() as CGImageRef // showing error - Unmanaged<CGImage>, is not convertible to CGImageRef
 cell.cameraOutlet.image = UIImage(CGImage: assets.thumbnail()) as UIImage // Showing error - Missing argument for parameter 'inBundle' in call 

我想要显示图像,我怎么做呢?

代码语言:javascript
运行
复制
dispatch_async(dispatch_get_main_queue(), {
self.photoLibrary.enumerateGroupsWithTypes(ALAssetsGroupType(ALAssetsGroupAlbum),
    usingBlock: {

        (group: ALAssetsGroup!, stop: UnsafePointer<ObjCBool>) -> Void in
        if group != nil {
            group.enumerateAssetsUsingBlock({
                (asset: ALAsset!, index: Int, stop: UnsafePointer<ObjCBool>) -> Void in

                if asset != nil
                {
                    if asset.valueForProperty(ALAssetPropertyType).isEqualToString(ALAssetTypePhoto)
                    {
                        self.photoArray.addObject(asset)
                    }
                }
                })
        }
        self.collectionView.reloadData()
    },
    failureBlock: {
        (myerror: NSError!) -> Void in
        println("error occurred: \(myerror.localizedDescription)")
    })
    })

override func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
        //#warning Incomplete method implementation -- Return the number of sections
        return photoArray.count
    }


    override func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
        //#warning Incomplete method implementation -- Return the number of items in the section
        return 1
    }

    override func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
    let cell  : CameraCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Camera", forIndexPath: indexPath) as CameraCollectionViewCell

        var asset : ALAsset = photoArray.objectAtIndex(indexPath.row) as ALAsset
        cell.cameraOutlet.image = UIImage(CGImage: asset.thumbnail().takeUnretainedValue()) as UIImage
        return cell
    }

输出只显示一个图像100次,我认为。这个代码有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-26 10:50:44

thumbnail()函数返回Unmanaged<CGImage>。正如在使用Cocoa数据类型中解释的那样,您必须使用takeUnretainedValue()takeRetainedValue()将非托管对象转换为内存托管对象。在这种情况下

代码语言:javascript
运行
复制
cell.cameraOutlet.image = UIImage(CGImage: asset.thumbnail().takeUnretainedValue())

因为thumbnail()返回一个未保留的对象(is在其名称中没有“创建”或“复制”)。

Swift 3:

代码语言:javascript
运行
复制
cell.cameraOutlet.image = UIImage(cgImage: asset.thumbnail().takeUnretainedValue())

(但是,资产库框架在iOS 9中被取消,应该使用Photos框架。)

票数 9
EN

Stack Overflow用户

发布于 2017-05-31 10:03:30

代码语言:javascript
运行
复制
i dislay image use this way:

let assetslibrary = ZZALAssetsLibrary()
        assetslibrary.asset(for: imgUrl,
        resultBlock: { [weak self](mALAsset) in
            if (mALAsset == nil) {
                return
            }
            //[UIImage imageWithCGImage:resolutionRef scale:1.0f orientation:(UIImageOrientation)representation.orientation];
            if let mCGImageVal = mALAsset?.defaultRepresentation().fullScreenImage().takeUnretainedValue() {
                self?.imageView.image = UIImage(cgImage: mCGImageVal)
            }
        },
        failureBlock: { (mError) in
            print("ZZPhotoBrowserCell Photo from asset library error: ",mError ?? "unkown")
        })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24970128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档