【发布时间】:2013-08-11 12:23:09
【问题描述】:
我想保存显示在UIImage 中的图像。不过我想按类型分类,例如蔬菜、肉类、生菜等。
我找不到这样做的方法。
最好和最简单的方法是什么?
我还想让用户使用选择器控制器选择他想要保存的类别来保存。 谢谢!我真的需要帮助!
更新 2
为了检查它是否被保存,我进一步构建了一个集合视图控制器,我在[arrayCollectionImages addObject:image]; 的图像部分收到错误消息,你能解释一下最后一段代码吗?我在 arrayCollectionImages 也有一个警告,说 arrayColectionImages 的本地声明隐藏了实例变量。 ——
@interface CollectionViewController (){
NSArray *arrayCollectionImages;
}
@end
@implementation CollectionViewController
- (void)viewDidLoad {
dispatch_queue_t searchQ = dispatch_queue_create("com.awesome", 0);
dispatch_async(searchQ, ^{
NSArray *arrayCollectionImages = [[NSArray alloc ]init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *location=@"Hats";
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location];
NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
for(NSString *str in directoryContent){
NSString *finalFilePath = [fPath stringByAppendingPathComponent:str];
NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
if(data)
{ dispatch_async(dispatch_get_main_queue(),^{
UIImage *image = [UIImage imageWithData:data];
});
[arrayCollectionImages addObject:images];
}
}
});
[super viewDidLoad];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ReuseID" forIndexPath:indexPath];
[[cell collectionImageView]setImage:[UIImage imageNamed:[arrayCollectionImages objectAtindex:indexPath.item]]];
return cell;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [arrayCollectionImages count];
}
@end
【问题讨论】:
-
图片保存在哪里?到文件?你是什么意思分类它?到目前为止你有什么代码?
-
您可以将每张图片保存到应用沙箱中的单独文件夹中。这些图像不会在图库中可见,并且只能由您的应用访问。你想要这样吗?
-
让我们在聊天中进行讨论
-
1.由于你没有使用 UIImagePickerController ,你不需要包含 -(void)imagePickerController:(UIImagePickerController )picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ if(CFStringCompare((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo){ captureImage= (UIImage)[info objectForKey:UIImagePickerControllerOriginalImage]; } } 顺便说一下,在头文件中仅用于声明。我们不能把实现代码放在里面。 2. 您已经使用 AVCapture 捕获图像,并且 captureIamge 保存在 captureImage 变量中。查看我的编辑。
-
这是使用 UICollectionView 获取图像的一大步,您也在使用 GCD。我会鼓励你慢慢来,因为我觉得你是 iOS 的初学者。简单的步骤是 NSLog directoryContent 数组。如果它包含任何内容,则说明您已成功保存图像,如果不包含,则必须继续学习。我觉得您为初学者选择了一个非常广泛的主题。我鼓励您阅读 Apple 文档或一本好书来开始学习。 Head First 的 iOS 开发书籍可能是一个开始。
标签: ios uiimageview save categories