私はカメラアプリケーションで作業しています。キャプチャしたイメージをNSDocumentDirectoryに保存し、そのイメージをコレクションビューにロードする必要があります。私は配列のみを使用していました。私はNSDocumentディレクトリに関する多くの知識を持っていません。誰か助けてください。ここで これは私のコードで、私は、NSDocumentのディレクトリ・パスにNSDocumentのディレクトリパスにキャプチャされたイメージを保存してコレクションビューにロードする
-(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];
//Saving Image in Document directory Path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = paths.firstObject;
NSData *imageData1 = UIImagePNGRepresentation(self.image);
NSString *imageFolder = @"Photos";
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat:@"yyyMMddHHmmss"];
NSDate *now = [NSDate date];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *myUniqueName = [NSString stringWithFormat:@"Photo-%@.png",theDate];
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, myUniqueName] contents:nil attributes:nil];
[imageData writeToFile:[NSString stringWithFormat:@"%@/%@", imagePath, myUniqueName] atomically:YES];
[self.collection_View reloadData];
}
}];
をキャプチャ画像を保存していinViewDidLoad
が NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = paths.firstObject;
NSString *fullPath = [NSString stringWithFormat:@"%@/%@", documentDirectory, @"Photos"]; // image path is same as above
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:fullPath error:nil];
self.fileList=[[NSMutableArray alloc]init];
self.fileName=[[NSMutableArray alloc]init];
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) {
for (NSString *filename in dirContents) {
NSString *fileExt = [filename pathExtension];
if ([fileExt isEqualToString:@"png"]) {
NSString *fullPth = [fullPath stringByAppendingPathComponent:filename];
[self.fileList addObject:fullPth];
[self.fileName addObject:filename];
NSLog(@"File name : %@ ",filename);
NSLog(@"fullPth : %@ ",fullPth);
}
}
} else {
NSLog(@"No Files");
}
は私がコレクションビューにnsdocumnetディレクトリ・パスからイメージをロードしています、私のコードです。
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionViewCell *Cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
//Loading images from path
//Cell.image_View.image = nil;
NSString *filePath = [self.fileList objectAtIndex:indexPath.row];
UIImage *image =[UIImage imageWithContentsOfFile:filePath];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (image) {
Cell.image_View.image = image;
// [activityIndicator stopAnimating];
//activityIndicator.hidden = YES;
self.collection_View.hidden = NO;
} else {
Cell.image_View.image = [UIImage imageNamed:@"tours-walk.png"];
}
});
});
Cell.layer.shouldRasterize = true;
Cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
return Cell;}
私は何かを試してみました、最新の画像は、このコードをme.check手助けしなさい見せている画像を撮影し、nsdocumentdirectoryパスに保存しますが、私は再びそれを実行しonly.ifそれは、前の画像を表示して、任意のアイディアを提案する
ありがとうございます!!!
パス文字列を作成する方法を作ります/ 2037432 /画像を保存する画像ファイルとディレクトリを取得して電子メールに添付する –
ありがとう@jecky、画像を正常に保存しましたが、画像をコレクションビューに読み込むことはできません。 。 – Saraswathi
このコードから画像を取得できます。 NSString * filePath = [[NSBundle mainBundle] pathForResource: ofType:]; cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filePath]]; –