Resim adını PHAssets
kullanarak almaya çalışıyorum. Ancak dosya adı için meta veriler veya resim adını almak için herhangi bir yöntem bulamadım. Dosya adını almak için farklı bir yolu var mı? Eğer resim adını almak istiyorsanıziOS8 Fotoğraflar Çerçeve: Nasıl bir PHAsset adını (veya adını) almak için?
cevap
IMG_XXX.JPG gibi (Fotoğraflar son fotoğrafın örneğin isim), bu deneyebilirsiniz:
PHAsset *asset = nil;
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
if (fetchResult != nil && fetchResult.count > 0) {
// get last photo from Photos
asset = [fetchResult lastObject];
}
if (asset) {
// get photo info from this asset
PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init];
imageRequestOptions.synchronous = YES;
[[PHImageManager defaultManager]
requestImageDataForAsset:asset
options:imageRequestOptions
resultHandler:^(NSData *imageData, NSString *dataUTI,
UIImageOrientation orientation,
NSDictionary *info)
{
NSLog(@"info = %@", info);
if ([info objectForKey:@"PHImageFileURLKey"]) {
// path looks like this -
// file:///var/mobile/Media/DCIM/###APPLE/IMG_####.JPG
NSURL *path = [info objectForKey:@"PHImageFileURLKey"];
}
}];
}
yardımcı olur Umut.
Swift yılında kodu nedir gerçekten aradığınız ısrarla nesneyi tanımlayan benzersiz bir dizedir localIdentifier bu
PHImageManager.defaultManager().requestImageDataForAsset(asset, options: PHImageRequestOptions(), resultHandler:
{
(imagedata, dataUTI, orientation, info) in
if info!.keys.contains(NSString(string: "PHImageFileURLKey"))
{
let path = info![NSString(string: "PHImageFileURLKey")] as! NSURL
}
})
gibi görünecektir. here
Bir daha seçenektir
fetchAssetsWithLocalIdentifiers:options:, fetchAssetCollectionsWithLocalIdentifiers:options:, or fetchCollectionListsWithLocalIdentifiers:options: method.
daha fazla bilgiyi mevcuttur:
kullanın bu dize kullanarak nesneyi bulmak için
[asset valueForKey:@"filename"]
"yasallığı" nin karar vermek size kalmış.
PHAsset için 'filename' adında bir özellik yok. Nasıl çalışır? –
Büyü. =] Genel API'da bulunmayan özel bir özellik. Göreceli olarak kullanıldı, çünkü diğer, genel API, 'filename 'adı verilen özellikler var. –
, bu iOS 8'de çalışıyor mu? –
ben soru zaten yanıtlandı biliyorum ama başka bir seçenek sunmak düşündüm:
extension PHAsset {
var originalFilename: String? {
var fname:String?
if #available(iOS 9.0, *) {
let resources = PHAssetResource.assetResourcesForAsset(self)
if let resource = resources.first {
fname = resource.originalFilename
}
}
if fname == nil {
// this is an undocumented workaround that works as of iOS 9.1
fname = self.valueForKey("filename") as? String
}
return fname
}
}
basit cevabı Lütfen bir öğenin referans url vardır:
if let asset = PHAsset.fetchAssetsWithALAssetURLs([referenceUrl], options: nil).firstObject as? PHAsset {
PHImageManager.defaultManager().requestImageDataForAsset(asset, options: nil, resultHandler: { _, _, _, info in
if let fileName = (info?["PHImageFileURLKey"] as? NSURL)?.lastPathComponent {
//do sth with file name
}
})
}
SWIFT4: ilk import Photos
if let asset = PHAsset.fetchAssets(withALAssetURLs: [info[UIImagePickerControllerReferenceURL] as! URL],
options: nil).firstObject {
PHImageManager.default().requestImageData(for: asset, options: nil, resultHandler: { _, _, _, info in
if let fileName = (info?["PHImageFileURLKey"] as? NSURL)?.lastPathComponent {
print("///////" + fileName + "////////")
//do sth with file name
}
})
}
- 1. Python datetime gün adını almak için nasıl
- 2. Geçerli sınıfın adını almak için önişlemci makrosu?
- 3. Telefonun kullanıcısının ilk adını (veya tam adını) nasıl alabilirim?
- 4. Ana bilgisayar sunucusunun adını almak için Django nasıl kullanılır?
- 5. Dosya adını `FILE *` den almak için bir yol var mı?
- 6. Sadece dosya adını kaydetme dosya adını nasıl alırım
- 7. İndirmek için bir dosya adını nasıl kodlarım?
- 8. Dosya adını bayt dizisinden veya Stream
- 9. nasıl görüntü url görüntü adını ayrıştırmak için
- 10. Tablo Nasıl Varlık Çerçeve Çekirdeğindeki eşlenen varlığın Adını edin
- 11. Python'da geçerli oturum açma adını almak için çapraz platform çözümü
- 12. ProGuard, sınıf adını saklar ancak paket adını değiştirmek için
- 13. Rails'de ülke adını nasıl alabilirim?
- 14. Sınıf adını
- 15. iOS8
- 16. Uygulama adını paket adını değil ve nasıl açabilirim?
- 17. JavaScript kullanarak yönlendirenin alan adını/ana bilgisayar adını nasıl alabilirim?
- 18. Yolsuz __FILE__ adını yankılanmak istiyorum. Sadece sayfanın adını istiyorum: index.php
- 19. PHP'deki asılsız bir nesneden geçerli sınıfın adını almak mümkün mü?
- 20. Modeller için Ekran Adını Tanımla
- 21. Bir montajın tam adını alma
- 22. Klasörün adını bir yoldan alma
- 23. Sınıf adını D
- 24. Bir UIViewControl nesnesinin nib adını
- 25. Geçerli yöntemin adını edinin
- 26. wsimport "adını çözülemiyor ..."
- 27. sqlite ekli veritabanlarının adını alın
- 28. "www" olmadan alt alan adını veya ana etki alanını almak için Ruby'deki URL'yi ayrıştırın mı?
- 29. SQL sunucusu - db adını
- 30. DynamoDB'deki sütun adını nasıl güncelleyebilirim?
Bu, yalnızca kirli çözümdür. 'PHImageFileURLKey' belgesiz anahtardır ve görüntü düzenlenirse (örneğin resim filtresiyle) bu URL'nin son yol bileşeninde benzersiz bir adı yoktur. – user500
Kabartı her zaman dosya: ///var/mobile/Media/DCIM/###APPLE/IMG_####.JPG? Bunu şifrelemek için bir yol var mı ve sadece test.png için dosya adını aldınız mı? –
Ve sistemin görüntüleri yeniden adlandırmasını engellemenin bir yolu var mı? Bir görüntüyü cihazıma aktarırsam, bilgisayarımdan taşıdıkları ve daha sonra bunları uygulamaya aktardığım dosyaların aynısını korumasını isterim. O zamandan beri var mı? –