来自文件的UIImage总是为零

时间:2015-11-18 21:31:10

标签: ios objective-c uiimageview uiimage

我正在制作文档扫描应用

扫描的文档存储在应用程序结构中的临时文件中,并且该文件的路径存储在NSString变量中

此图像传递给成功加载的UIImageView

[self.cameraViewController captureImageWithCompletionHander:^(NSString *imageFilePath)
{
    UIImageView *captureImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:imageFilePath]];
    captureImageView.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.7];
    captureImageView.frame = CGRectOffset(weakSelf.view.bounds, 0, -weakSelf.view.bounds.size.height);
    captureImageView.alpha = 1.0;
    captureImageView.contentMode = UIViewContentModeScaleAspectFit;
    captureImageView.userInteractionEnabled = YES;
    [weakSelf.view addSubview:captureImageView];

然后想要将图像转换为base64准备上传。为了做到这一点,我将调用接受UIImage对象的以下内容

- (NSString *)encodeToBase64String:(UIImage *)image {
    return [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

imageFilePath变量的值是

/private/var/mobile/Containers/Data/Application/79C28B96-275D-48F1-B701-CABD699C388D/tmp/ipdf_img_1447880304.jpeg

要从我使用此

的文件中获取图像
UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageFilePath ofType:nil]];

base64String   = [self encodeToBase64String:img];

问题是UIImage对象总是nill(或nill)。起初我虽然问题可能是路径,但图像在UIImageView中加载。

有人可以帮我弄清楚为什么这不会返回存储在imageFilePath变量中的图像

1 个答案:

答案 0 :(得分:1)

替换:

UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:imageFilePath ofType:nil]];

使用:

UIImage *img = [UIImage imageWithContentsOfFile:imageFilePath];

您没有从捆绑中加载图片。

此外,请确保您没有尝试使用应用程序执行的完整路径。只保留相对路径,因为应用程序沙箱的路径可能随时间而变化。