如何以编程方式从应用程序中删除图像

时间:2012-03-31 08:56:07

标签: iphone objective-c xcode

我们可以使用

将图像添加到相册中
UIImage *img = [UIImage imageNamed:@"ImageName.png"];  

UIImageWriteToSavedPhotosAlbum(img, self, 
          @selector(image:didFinishSavingWithError:contextInfo:), nil);

以后可以删除添加的图像吗?如果是这样,我如何为用户提供删除添加图像的选项。

4 个答案:

答案 0 :(得分:4)

您的问题不是很清楚,但如果您使用文档目录保存此图片,请使用以下方法:

文件目录方法

保存

-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    if ([[extension lowercaseString] isEqualToString:@"png"]) {
        [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
    } else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
        [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
    } else {
        ALog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
    }
}

<强>加载

-(UIImage *) loadImage:(NSString *)fileName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {

    UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.%@", directoryPath, fileName, extension]];

    return result;
}

删除

-(void) removeFile:(NSString *)fileName ofType:(NSString *)extension inDirectory:(NSString *)directory {
    NSFileManager * fileManager = [NSFileManager defaultManager];
    NSError * error = nil;

    if ([[NSFileManager defaultManager] fileExistsAtPath:[directory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", fileName, extension]]]) {
        BOOL itemRemoved = [fileManager removeItemAtPath:[NSString stringWithFormat:@"%@/%@.%@", directory, fileName, extension] error:&error];
        if (itemRemoved == TRUE) {
            ALog(@"Item \"%@\" Removed", fileName);
        } else {
            ALog(@"Item \"%@\" Removal Failed", fileName);
        }
    } else {
        ALog(@"Item \"%@\" does not exist", fileName);
    }
}

如何对

保存

NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[self saveImage:yourImage withFileName:@"YourImageName" ofType:@"png" inDirectory:path];

加载

NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
UIImage * myImage = [self loadImage:@"YourImageName" ofType@"png" inDirectory:path];

删除

NSString * path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[self removeFile:@"YourImageName" ofType:@"png" inDirectory:path];

注意: 在这种情况下,'png'扩展名用作默认值,但您可以将其更改为您正在使用的图片扩展名。

相册方法

<强>建议

使用上述方法将文件保存到文档目录文件夹,在应用程序中读取图像。如果用户不喜欢照片,他/她可以从您的应用程序(文档目录)中删除它。如果用户喜欢这张照片,他/她可以将其添加到相册中,或者当应用程序退出时,您可以添加代码将照片添加到您的相册中。

许多照片应用程序都使用文档目录方法。如果您使用文档目录方法,上述方法将对您有所帮助。

答案 1 :(得分:0)

NSString *fileName = [NSString stringWithFormat:@"myfile.example"];
NSString *filePath = [self documentsPathForFileName:fileName];
NSFileManager *fileManager = [NSFileManager defaultManager];

[fileManager removeItemAtPath:myFilePath error:NULL];

如果文件已打开,则必须先关闭该文件。

抱歉,重读我认为我误解了你的问题。

答案 2 :(得分:0)

创建一个名为Delete的按钮。当他点击它时,你必须在tableview中加载图像,这样你就可以在tableview中给出删除选项(基于此只需你需要加载图像来处理UserId) )

NSFileManager *defaultFileManager = [NSFileManager defaultManager];
NSString *filePath = @"pass the Path here";
 [defaultFileManager removeItemAtPath:filePath error:nil]; 

答案 3 :(得分:0)

不,您无法删除保存在相册中的图像。用户应手动执行此操作。请注意,保存到相册时未指定文件名。 UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);。 iOS动态地为要保存的图像指定文件名。