【问题标题】:name of the picked image xcode选取的图像 xcode 的名称
【发布时间】:2012-11-22 11:54:38
【问题描述】:

我想获取从库中挑选或新点击的图片的名称-

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

我正在使用此代码:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum])
    {
        AppDelegate *del = [[UIApplication sharedApplication]delegate];
        [self dismissModalViewControllerAnimated:YES];
        image = [info objectForKey:UIImagePickerControllerOriginalImage];

        NSLog(@"imagekbgfg=====>%@",image);
        [self.imageView setImage:image];

        imgName = [info objectForKey:UIImagePickerControllerOriginalImage];

        del.mainImgName = imgName;
        del.imageData = UIImageJPEGRepresentation(image, 1.0);
        del.imageApp = image;
    }

    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
    {
       image = [info objectForKey:UIImagePickerControllerOriginalImage];
    }
}

我该怎么做?

【问题讨论】:

    标签: objective-c ios xcode uiimagepickercontroller


    【解决方案1】:

    使用下面的代码,当您从相册中挑选图像时,您将获得如下路径:assets-library://asset/asset.JPG?id=79450962-C0FD-484C-808B-83E045F40972&ext=JPG。此路径有效。它包含资产 ID 和资产类型。

    // Firstly get the picked image's file URL.
    NSURL *imageFileURL = [info objectForKey:UIImagePickerControllerReferenceURL];
    
    // Then get the file name.
    NSString *imageName = [imageFileURL lastPathComponent];
    NSLog(@"image name is %@", imageName);
    

    如果您想使用您使用UIImagePickerController 获得的路径再次选择图像用户。(这里也许您想保存路径,以便您可以读取该图像而不要求用户再次选择该图像)您将需要ALAssetsLibrary,否则你不需要它。

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    __block UIImage *returnValue = nil;
    [library assetForURL:imageFileURL resultBlock:^(ALAsset *asset) {
        returnValue = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
    } failureBlock:^(NSError *error) {
        NSLog(@"error : %@", error);
    }];
    

    【讨论】:

    • 你为什么要问这个问题?您已使用UIImagePickerController。有什么问题吗?
    • 我的意思是它与 ALAssetsLibrary 有关吗?
    【解决方案2】:

    看看 UIImagePickerControllerDelegate 协议。字符串 UIImagePickerControllerReferenceURL 包含文件的 URL。你可以用它来构造文件名。

    除此之外,似乎没有内置方法可以从 UIImage 或 UIImageView 对象获取文件名。

    参考: Stackoverflow answer

    【讨论】:

      【解决方案3】:

      您可以使用以下代码获取文件名:

      NSURL *assetURL = [imageDic objectForKey:UIImagePickerControllerReferenceURL];
      
       __block NSString *originalFileName = nil;
      
       ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
       [library assetForURL:assetURL resultBlock:^(ALAsset *asset){
                   originalFileName = [[asset defaultRepresentation] filename];
      }
      

      originalFileName 给出资源的原始文件名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多