Core data 如何将用户选择的图像(Zbar扫描仪)保存在“应用程序文档”文件夹中
我有两个视图,其中一个是UITableVew,用户可以通过添加它们来填充单元格。第二个视图是他们添加的信息(姓名、日期、公司和扫描条形码的地点)。当他们扫描图像时,他们可以看到他们扫描的图像(使用Zbar条形码扫描仪完成)。因此,主要的问题是,我如何才能在用户添加的每个不同单元格中准确地保存不同的图像 代码: 兹巴:Core data 如何将用户选择的图像(Zbar扫描仪)保存在“应用程序文档”文件夹中,core-data,uiimageview,nsfilemanager,xcode4.6,nsdocumentdirectory,Core Data,Uiimageview,Nsfilemanager,Xcode4.6,Nsdocumentdirectory,我有两个视图,其中一个是UITableVew,用户可以通过添加它们来填充单元格。第二个视图是他们添加的信息(姓名、日期、公司和扫描条形码的地点)。当他们扫描图像时,他们可以看到他们扫描的图像(使用Zbar条形码扫描仪完成)。因此,主要的问题是,我如何才能在用户添加的每个不同单元格中准确地保存不同的图像 代码: 兹巴: - (IBAction)cameraButtonTapped:(id)sender { // Check for camera if ([UIIma
- (IBAction)cameraButtonTapped:(id)sender
{
// Check for camera
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == YES) {
// Create image picker controller
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// Set source to the camera
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// Delegate is self
imagePicker.delegate = self;
// Show image picker
[self presentModalViewController:imagePicker animated:YES];
}
}
- (void) imagePickerController: (UIImagePickerController*)reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
// ADD: get the decode results
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
// EXAMPLE: just grab the first barcode
break;
// EXAMPLE: do something useful with the barcode data
resultText.text = symbol.data;
// EXAMPLE: do something useful with the barcode image
resultImage.image =
[info objectForKey: UIImagePickerControllerOriginalImage];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader dismissModalViewControllerAnimated:YES];
}
-(UIView*)CommomOverlay{
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];
UIImageView *TopBar = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,58)];
[TopBar setImage:[UIImage imageNamed:@""]];
[view addSubview:TopBar];
UILabel *Toplabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 9, 300, 30)];
[Toplabel setFont:[UIFont fontWithName:@"Heiti TC light" size:22]];
[Toplabel setTextAlignment:UITextAlignmentCenter];
[Toplabel setBackgroundColor:[UIColor clearColor]];
[Toplabel setTextColor:[UIColor lightGrayColor]];
[Toplabel setNumberOfLines:1];
[Toplabel setText:@"Turn your device sideways to scan"];
[TopBar addSubview:Toplabel];
UIImageView *FrameImg = [[UIImageView alloc] initWithFrame:CGRectMake(40,50,240,370)];
[FrameImg setImage:[UIImage imageNamed:@"scanImage.png"]];
[view addSubview:FrameImg];
return view;
}
- (IBAction) scanButtonTapped
{
// ADD: present a barcode reader that scans from the camera feed
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner *scanner = reader.scanner;
// TODO: (optional) additional reader configuration here
// EXAMPLE: disable rarely used I2/5 to improve performance
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
// present and release the controller
reader.cameraOverlayView = [self CommomOverlay];
[self presentModalViewController: reader
animated: YES];
}
如果您已经在使用Core Data,则根据图像的大小,您可以将其转换为NSData并直接保存在Core Data中(如果较小),也可以将其保存在documents目录中并将文件名保存在Core Data中 因为完整的核心数据教程超出了本文的范围,所以我只想用唯一的名称将图像保存到documents目录。请注意,下面的一些代码是从“”改编的 以下方法检索图像:
- (UIImage *)imageForKey:(NSString *)imgkey {
result = [UIImage imageWithContentsOfFile:[self imagePathForKey:imgkey thumbnail:FALSE]];
if (!result) {
// File not found - add code here as needed (to return default image or whatever)
}
return result;
}
请注意,如果计划同时在表中显示多个图像,则必须小心确保图像较小,否则可能会遇到内存问题。在这种情况下,您希望将它们转换为表格视图的缩略图形式,然后仅在详细视图中显示全尺寸图像(如何生成缩略图将是一个单独的问题)。如果您已经在使用核心数据,然后根据图像的大小,您可以将其转换为NSData并直接保存在Core Data中(如果图像较小),也可以将其保存在documents目录中并将文件名保存在Core Data中 因为完整的核心数据教程超出了本文的范围,所以我只想用唯一的名称将图像保存到documents目录。请注意,下面的一些代码是从“”改编的 以下方法检索图像:
- (UIImage *)imageForKey:(NSString *)imgkey {
result = [UIImage imageWithContentsOfFile:[self imagePathForKey:imgkey thumbnail:FALSE]];
if (!result) {
// File not found - add code here as needed (to return default image or whatever)
}
return result;
}
请注意,如果计划同时在表中显示多个图像,则必须小心确保图像较小,否则可能会遇到内存问题。在这种情况下,您可能希望将它们转换为表视图的缩略图形式,然后仅在详细视图中显示全尺寸图像(如何生成缩略图将是一个单独的问题)。那么我将如何调用此方法来保存它们?我用我的代码发布了一个用于保存的编辑,那么我如何调用此方法来保存它们呢?我发布了一个带有代码的编辑来保存
- (UIImage *)imageForKey:(NSString *)imgkey {
result = [UIImage imageWithContentsOfFile:[self imagePathForKey:imgkey thumbnail:FALSE]];
if (!result) {
// File not found - add code here as needed (to return default image or whatever)
}
return result;
}