我正面临一个问题。我的支持文件组下有一个名为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是一个数组,用于存放Album目录中包含的所有图像的名称。我确定我的应用程序将图像保存在相册目录中,因为当我使用终端列出ImageEditing.app中的相册目录的内容时,它会显示newImage11.jpeg文件。任何形式的帮助都会很明显。
答案 0 :(得分:0)
首先你无法写入bundlePath
,洞穴应用程序包是只读的。
其次,您确定在项目的资源组中创建了一个目录,而不是一个组(组文件夹图标为黄色,文件夹为蓝色)。
构建应用程序时,将忽略作为组的黄色文件夹,此文件夹中的所有文件都位于应用程序包的根目录中。
您可以将文件写入文档目录:
NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
这些目录将自动与iCould同步,并且根据Apple应该只包含用户生成的文件。您应用可以重新创建或可以再次下载的任何文件都应该进入缓存目录:
NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
答案 1 :(得分:0)
问题很简单,您正在尝试将已编辑的图像保存到bundle中。实际上,应用程序包是“只读”。对于这种读写访问,您可以使用文档目录或库。 您可以通过以下代码片段获取文档目录路径。
NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];