2016-10-04 3 views
0

У меня есть изображение как в пути каталога nsdocument, так и в словаре singleton class, и я хочу получить эти изображения из каталога словарей или документов и загрузить их в виде коллекции. Я пытался, что я получаю такое же изображение тиражирование .. вот мой код ..Сохранение и извлечение изображения в коллекцию Просмотр

-(IBAction)takephoto:(id)sender 
    { 
    tapCount += 1; 
    AVCaptureConnection *videoConnection = nil; 
    for(AVCaptureConnection *connection in StillImageOutput.connections) 
    { 
    for(AVCaptureInputPort *port in [connection inputPorts]) 
    { 
     if ([[port mediaType] isEqual:AVMediaTypeVideo]){ 
      videoConnection =connection; 
      break; 

     } 
    } 
} 


[StillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error){ 


    if (imageDataSampleBuffer!=NULL) { 

     NSData *imageData =[AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer]; 


     self.image = [ UIImage imageWithData:imageData]; 
     int x = arc4random() % 100; 
     NSTimeInterval secondsSinceUnixEpoch = [[NSDate date]timeIntervalSince1970]; 

     self.UniqueImageName = [NSString stringWithFormat:@"%@_%d_%d",self.siteName,x,(int)secondsSinceUnixEpoch]; 

     [[SingletonImage singletonImage]SaveImageInNSdocumentAndCache:self.image withImageName:self.UniqueImageName]; 
     //reloading the collection view 
     [self.collection_View reloadData]; 

Мой синглтон класс

 #import "SingletonImage.h" 

    @implementation SingletonImage 



     - (id)init 
     { 
self = [super init]; 
if (self) 
{ 
    self.arrayDict = [[NSMutableArray alloc] init]; 
    self.imageDict = [[NSMutableDictionary alloc]init]; 
     } 
return self; 
    } 

    +(instancetype)singletonImage 
    { 
static SingletonImage *singletonImage; 

static dispatch_once_t onceToken; 

dispatch_once(&onceToken, ^{ 
    singletonImage = [[SingletonImage alloc]init]; 


}); 
return singletonImage;} 

// Сохранение изображения в массив словарей и NSDocument каталог путь

-(void)SaveImageInNSdocumentAndCache:(UIImage *)image withImageName:(NSString *)str 
    { 

//Saving image in array of dictionaries 

[self.imageDict setObject:image forKey:str]; 

[self.arrayDict insertObject:self.imageDict atIndex:0]; 


//Saving image in nsdocumnet directory path 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentDirectory = paths.firstObject; 
NSData *imageData = UIImagePNGRepresentation(image); 

NSString *imageFolder = @"Photos"; 

NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; 

[dateFormat setDateFormat:@"yyyMMddHHmmss"]; 
    NSString *imagePath = [NSString stringWithFormat:@"%@/%@",documentDirectory,imageFolder]; 

BOOL isDir; 
NSFileManager *fileManager= [NSFileManager defaultManager]; 
if(![fileManager fileExistsAtPath:imagePath isDirectory:&isDir]) 
    if(![fileManager createDirectoryAtPath:imagePath withIntermediateDirectories:YES attributes:nil error:NULL]) 
     NSLog(@"Error: folder creation failed %@", documentDirectory); 

[[NSFileManager defaultManager] createFileAtPath:[NSString stringWithFormat:@"%@/%@", imagePath, str] contents:nil attributes:nil]; 
[imageData writeToFile:[NSString stringWithFormat:@"%@/%@", imagePath, str] atomically:YES]; 

}

// P rovide изображение, если оно в словаре

 - (UIImage *)ProvideImage:(NSString *)text { 

UIImage *Savedimage; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:text]; 

if ([self.imageDict objectForKey:text]) { 

    Savedimage = [self.imageDict objectForKey:text]; 
    } 

    else if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) 
{ 

    Savedimage = [UIImage imageWithContentsOfFile:filePath]; 

    NSLog(@"%@",Savedimage); 

     //Savedimage = 
     NSLog(@"File exists at the path"); 

    } 

    else 

    { 
     NSLog(@"Image doesnot exist"); 

    } 
    return Savedimage;} 

    -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    { 

    CollectionViewCell *Cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 


//Loading images 




UIImage *savedImage = [[SingletonImage singletonImage]ProvideImage:self.UniqueImageName]; 

Cell.image_View.image =savedImage; 

return cell;} 

я получать одно изображение несколько раз .please HelpMe, чтобы сделать это ..

Заранее спасибо !!!

+0

сделать изображение Вашего изображения Нилл и перед правопреемником на мобильный –

+0

Спасибо, ravi.p, я хочу все изображения в словаре из класса одноплодного и хочу, чтобы показать их в целях сбора – Saraswathi

+0

Пожалуйста, любые один помочь мне – Saraswathi

ответ

0

Вы должны действительно использовать SDImageCache - это очень легко

#import <SDWebImage/UIImageView+WebCache.h>

магазин изображения во встроенном в словаре Cache:

[[SDImageCache sharedImageCache] storeImage:image forKey:@"image1"];

получить изображение, как это всякий раз, когда:

SDImageCache *imageCache = [SDImageCache sharedImageCache]; 
NSString *key = @"image1" 
[imageCache queryDiskCacheForKey:key done:^(UIImage *image , SDImageCacheType cacheType) { 
    if (image) 
    { 
     view.image = image; 
    } 
    else 
    { 
     view.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:key]]]; 
    } 
}]; 

Это означает, что вы можете хранить изображения на ранней стадии - особенно если вы загружаете их из Интернета.

Смежные вопросы