我很难弄清楚这一点,非常感谢一些帮助。
基本上,我正在尝试在用户按下按钮时生成一个 pdf 文档中存储在资产库中的照片。
我可以使用以下代码毫无问题地绘制包含在 pdf 中应用程序资源文件夹中的 .png 图像:
- (void) drawImage
{
UIImage * demoImage = [UIImage imageNamed:@"demo.png"];
[demoImage drawInRect:CGRectMake( (pageSize.width - demoImage.size.width/2)/2, 350, demoImage.size.width/2, demoImage.size.height/2)];
}
但是,我需要首先使用块将照片从资产库中取出。例如:
NSURL *url = [[NSURL alloc] initWithString:image.photo];
ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];
[library assetForURL:url resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *rep = [asset defaultRepresentation];
self.filename = [rep filename];
NSLog(@"filename for image is: %@", self.filename);
CGImageRef iref = [rep fullResolutionImage];
if (iref)
{
self.pdfImage = [UIImage imageWithCGImage:iref];
NSLog(@"image height %f", self.pdfImage.size.height);
}
[self.pdfImage drawInRect:CGRectMake( (pageSize.width - self.pdfImage.size.width/2)/2, 350, self.pdfImage.size.width/2, self.pdfImage.size.height/2)];
}
failureBlock:^(NSError *error)
{
NSLog(@"Couldn't load asset %@ => %@", error, [error localizedDescription]);
}];
}
文件名作为 .jpg 文件成功打印到日志中。self.pdfImage.size.height 也打印到日志中,这告诉我它正在查找图像。
但是,在调用 drawInRect 方法时图像为 null 并引发错误:Invalid Context: 0x0.