Wie konvertiert PHAsset zu UIImage in Objective-C
Ich habe ein array gefüllt mit PHAsset
Objekte (https://developer.apple.com/library/prerelease/ios/documentation/Photos/Reference/PHAsset_Class/index.html), und ich möchte wissen, wie kann ich konvertieren Sie Sie in einem UIImage und dann speichern Sie Sie in einem Array.
Array mit den PHAsset Objekte aufgerufen wird self.assets
und hier ist was ich habe, so weit:
PHImageManager *manager = [PHImageManager defaultManager];
CGFloat scale = UIScreen.mainScreen.scale;
NSMutableArray *images = [NSMutableArray arrayWithCapacity:[self.assets count]];
for (int i = 0; i < [self.assets count]; i++) {
CGSize targetSize = CGSizeMake(scale, scale);
[manager requestImageForAsset:[self.assets objectAtIndex:i]
targetSize:targetSize
contentMode:PHImageContentModeAspectFill
options:self.requestOptions
resultHandler:^(UIImage *image, NSDictionary *info){
[images addObject:image];
}];
}
selbst.requestOptions ist eine Eigenschaft, die in der .h
@property (nonatomic, strong) PHImageRequestOptions *requestOptions;
und in der viewDidLoad-ich bin, dies zu tun:
self.requestOptions = [[PHImageRequestOptions alloc] init];
self.requestOptions.resizeMode = PHImageRequestOptionsResizeModeExact;
self.requestOptions.deliveryMode = PHImageRequestOptionsDeliveryModeHighQualityFormat;
Aber nach einigen Debuggen, sehe ich immer wieder, dass self.assets
hat die folgenden Werte:
(
<PHAsset: 0x1743828a0> 3B6D658D-EC76-43A1-9793-35D889E9CF15/L0/001 mediaType=1/0, assetSource=3, (2448x2448), creationDate=2015-07-27 02:02:46 +0000, location=1, hidden=0, favorite=0 ,
<PHAsset: 0x174382970> 50F05575-71D2-446B-BD1E-8E3250E375AD/L0/001 mediaType=1/0, assetSource=3, (2448x2448), creationDate=2015-07-27 02:02:47 +0000, location=1, hidden=0, favorite=0
)
sowie images
leer ist. Weiß jemand, wie ich hinzufügen kann, konvertieren Sie die PHAssets in UIImages und fügen Sie Sie der images
array? Jede Hilfe ist willkommen. Danke!
InformationsquelleAutor Shalin Shah | 2015-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jeden kämpfen, so viel wie ich hatte auf dieses Problem, dies ist der Weg zu gehen.
Ersten Satz der requestOptions:
haben und wenn es mehrere Elemente in einem array gefüllt mit PHAsset Objekte, fügen Sie dann diesen code:
und jetzt die
images
array enthält alle Bilder inuiimage
format.Geben Sie diesem Mann ein cookie. requestOptions.synchron = JA; Diese meine Feste mysteriösen Fehler beim anfordern eines Vermögenswertes.
[Generic] Creating an image format with an unknown type is an error
InformationsquelleAutor Shalin Shah
Swift 3.0 Antwort
Optionen?.isSynchronous = true ist sehr wichtig
InformationsquelleAutor Muhammad Nayab
Bild möglicherweise null(selten). Es ist besser zu beurteilen, ansonsten array hinzufügen nil stürzt app.
InformationsquelleAutor YI-KUN Chiang
Swift 4.2
InformationsquelleAutor ZAFAR007