URL ekran görüntüsü iPhone ALAsset alınan
Cihazın Fotoğraf Galerisi dosyalara erişmek için ALAsset bir Çerçeve kullanıyorum.
Şimdiye kadar küçük ve ekran erişmek mümkün duyuyorum.
Bir resim görünümünde gerçek resmi göstermek istiyorum ama bunu yapmak için nasıl anlamaya kuramıyorum.
URL alanını kullanarak ALAsset nesne çalıştım ama başarısız oldu.
Herkes bu işi nasıl bilir?
İşte küçük resim erişimi ve bir tablo hücresine yerleştirin başardı bazı kod:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
//here 'asset' represents the ALAsset object
asset = [assets objectAtIndex:indexPath.row];
//i am accessing the thumbnail here
[cell.imageView setImage:[UIImage imageWithCGImage:[asset thumbnail]]];
[cell.textLabel setText:[NSString stringWithFormat:@"Photo %d", indexPath.row 1]];
return cell;
}
CEVAP
API biraz oyunun kurallarını değiştirdi ve müzik kütüphanesine doğrudan erişim dosya sistemi artık anlamıyorum. Bunun yerine varlık kitaplığı URL böyle bir şey olsun.
assets-library://asset/asset.JPG?id=1000000003&ext=JPG
URL üzerinden ALAsset nesneye erişmek için ALAssetLibrary nesne kullanın.
ALAssetLibrary için doktorları öyle bir başlık bu (veya kaynak) at
typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset);
typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);
kesinlikle gerekli değil ama işler çok tutar.
ve kaynak.
-(void)findLargeImage
{
NSString *mediaurl = [self.node valueForKey:kVMMediaURL];
//
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
ALAssetRepresentation *rep = [myasset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
if (iref) {
largeimage = [UIImage imageWithCGImage:iref];
[largeimage retain];
}
};
//
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{
NSLog(@"booya, cant get image - %@",[myerror localizedDescription]);
};
if(mediaurl && [mediaurl length] && ![[mediaurl pathExtension] isEqualToString:AUDIO_EXTENSION])
{
[largeimage release];
NSURL *asseturl = [NSURL URLWithString:mediaurl];
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:asseturl
resultBlock:resultblock
failureBlock:failureblock];
}
}
Dikkat Bu bir kaç şey iOS4 benim taşıma başlamadan önce benim için yeni olan blokları kullanan vardır ama bakmak istersiniz diye
http://www.mikeash.com/pyblog/friday-qa-2008-12-26.html
ve
Onlar kafanı kır ama eğer bildirim seçiciler veya geri olarak düşünürsen biraz yardımcı olur.
Ayrıca
findLargeImage
döner resultblock alışkanlık olarak çalıştır henüz bir geri arama. Largeİmage alışkanlık ol henüz geçerli.largeImage
olması gerekir örnek için kapsamlı değil değişken yöntem.
Bu yöntemi kullanarak bunu yapmak için inşa ama bir şey kullanmak daha uygun bulabilirsiniz kullanıyorum.
[node.view findLargeImage];
UIImage *thumb = node.view.largeImage;
if (thumb) { blah blah }
Almaya çalışırken öğrendim işte bu çalışma yine de.
iOS 5 güncelleme
Sonuç bloğu ne zaman harekete biraz görüntü üzerinde doğrudan kullanılabilir findLargeImage
arama sonra tevekkül kalamadım yani iOS5 & belki de tek çekirdekli cihazlar daha yavaş gibi görünüyor. Bir temsilci için çağrı için değiştirdim.
@protocol HiresImageDelegate <NSObject>
@optional
-(void)hiresImageAvailable:(UIImage *)aimage;
@end
ve ulaşım IS comme
//
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
ALAssetRepresentation *rep = [myasset defaultRepresentation];
CGImageRef iref = [rep fullResolutionImage];
if (iref) {
UIImage *largeimage = [UIImage imageWithCGImage:iref];
[delegate hiresImageAvailable:large];
}
};
Ekran görüntüsü iPhone simülatörü için...
İOS kontrol ekran görüntüsü 7 çoklu gö...
Tam bir sayfayı Firefox ile ekran görü...
Nasıl benim Android uygulaması arka pl...
Nasıl hem iPad destek ve evrensel uygu...