-1

我面临一个问题。我的 Supporting Files 组下有一个名为 Album 的目录。在这个目录中,我有一些图像。在我的图像编辑应用程序中,我想将编辑后的图像保存在我的相册目录中。我尝试使用以下代码将图像保存在我的相册目录中

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSString *albumPath = [bundleRoot stringByAppendingString:@"/Album"];
NSString *savedImagePath = [bundleRoot stringByAppendingPathComponent: @"newImage11.jpeg" ]; UIGraphicsBeginImageContext(drawImage.image.size); 
CGContextRef ctx = UIGraphicsGetCurrentContext();
 [drawImage.layer renderInContext:ctx]; 
UIImage *editedImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *editedImageData = UIImageJPEGRepresentation(editedImage, 1.0); UIGraphicsEndImageContext(); 
[editedImageData writeToFile:savedImagePath atomically:YES];

这里的drawImage是保存图像的UIImageView的IBOutlet。这段代码在我的相册目录中保存了一个文件newImage11.jpeg,它也有一个大小。但是当我从相册目录中检索图像时,它给了我一个空白图像。我使用以下代码检索图像

NSString *img = [onlyJPGs objectAtIndex:currentIndex+numberToAdd]; 
UIImage *tempImage = [UIImage imageNamed:img]; 
imageButton.tag = img; 
[imageButton setImage:tempImage forState:UIControlStateNormal]; 
[imageButton addTarget:nil action:@selector(goToEdit:) forControlEvents:UIControlEventTouchUpInside]; 
currentIndex+=numberToAdd;

onlyJPGs 是一个数组,其中包含专辑目录中包含的所有图像的名称。我确信我的应用程序正在将图像保存在专辑目录中,因为当我使用终端在 ImageEditing.app 中列出专辑目录的内容时,它会向我显示 newImage11.jpeg 文件。任何形式的帮助都将是可观的。

4

2 回答 2

0

首先,您无法写入bundlePath,hole 应用程序包是只读的。

其次,您确定您在项目的资源组中创建了一个目录,而不是一个组(组文件夹图标为黄色,文件夹为蓝色)。

构建应用程序时省略了作为组的黄色文件夹,此文件夹中的所有文件都位于应用程序包的根目录中。

您可以将文件写入文档目录:

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

这些目录将自动与 iCould 同步,并且根据 Apple 的规定,应该只包含用户生成的文件。您的应用程序可以重新创建或可以再次下载的任何文件都应该放在缓存目录中:

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
于 2011-12-06T08:55:40.190 回答
0

问题很简单,您试图将编辑后的图像保存到包中。实际上应用程序包是“只读”的。对于这种读写访问,您可以使用文档目录或库。您可以通过以下代码片段获取文档目录路径。

NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
于 2011-12-06T09:05:41.790 回答