我有ALAssetsLibrary从相机里返回的图像。现在,我想在UIImageView
中显示它。我尝试了这段代码,但它显示了一些错误:
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
在那之后,我尝试了下面的代码:
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
我想要显示图像,我怎么做呢?
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次,我认为。这个代码有什么问题?
发布于 2014-07-26 10:50:44
thumbnail()
函数返回Unmanaged<CGImage>
。正如在使用Cocoa数据类型中解释的那样,您必须使用takeUnretainedValue()
或takeRetainedValue()
将非托管对象转换为内存托管对象。在这种情况下
cell.cameraOutlet.image = UIImage(CGImage: asset.thumbnail().takeUnretainedValue())
因为thumbnail()
返回一个未保留的对象(is在其名称中没有“创建”或“复制”)。
Swift 3:
cell.cameraOutlet.image = UIImage(cgImage: asset.thumbnail().takeUnretainedValue())
(但是,资产库框架在iOS 9中被取消,应该使用Photos框架。)
发布于 2017-05-31 10:03:30
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")
})
https://stackoverflow.com/questions/24970128
复制相似问题