1

我正在创建一个 iPhone 应用程序,并且我想从 Web 服务下载多个图像文件。我想将图像保存在应用程序本身的本地文件夹中,并将路径保存到 SQLite 数据库中的每个文件。我该如何实施?请帮忙。

4

2 回答 2

9
**// Get an image from the URL below**
    UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"yorimageurl"]]];

    NSLog(@"%f,%f",image.size.width,image.size.height);

    **// Let's save the file into Document folder.**

    NSString *Dir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    NSString *pngPath = [NSString stringWithFormat:@"%@/test.png",Dir];// this path if you want save reference path in sqlite 
    NSData *data1 = [NSData dataWithData:UIImagePNGRepresentation(image)];
    [data1 writeToFile:pngFilePath atomically:YES];

    NSLog(@"saving jpeg");
    NSString *jpegPath = [NSString stringWithFormat:@"%@/test.jpeg",Dir];// this path if you want save reference path in sqlite 
    NSData *data2 = [NSData dataWithData:UIImageJPEGRepresentation(image, 1.0f)];//1.0f = 100% quality
    [data2 writeToFile:jpegFilePath atomically:YES];

    NSLog(@"saving image done");

    [image release];

>> 更新补充:

您需要在 sqlite 数据库中保存图像名称(您可以尽早执行的唯一名称..正确..!!),您可以使用该名称创建路径或检索图像,如下所示。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:@"test.png"];// here you jus need to pass image name that you entered when you stored it.

希望对你有帮助...

于 2012-05-07T12:07:40.010 回答
2

在实现@Nit 的代码之后.. 你可以参考这个在数据库中插入记录。

这显示了如何在数据库中插入记录。为了获得路径,请阅读我在@Nit 的回答中的评论。

更新:

要获取每个下载文件的路径,您必须为每个文件保留唯一名称。现在您将拥有写入文件的路径,该路径是每个文件的唯一路径。现在您只需在每次下载文件时执行插入查询,或者需要将文件路径保存在数组中,稍后根据您的要求执行查询。不要忘记为每个文件赋予不同的文件名,否则只有一个文件存在并且您的路径将相同。

要获得唯一的文件名,您可以使用时间戳:

NSString *fileName = [NSString stringWithFormat:@"%lf.png", [[NSDate date] timeIntervalSince1970];

更新2:

你现在有这样的路径:/Users/John/Library/Application Support/iPhone Simulator/5.1/Applications/84A837AA-7881-4D99-B6E2-623DC9A2E5D3/Documents/test.png

在图像视图中获取图像:

UIImage *img = [UIImage imageWithContentsOfFile:yourPath];
//[UIImage imageWithData:[NSData dataWithContentsOfFile:yourPath]];
UIImageView *imgView = // Alloc + Init + Setting frame etc
imgView.image = img;

这将在您的图像视图中显示图像

希望这可以帮助

于 2012-05-07T12:16:41.097 回答